AirbusMediator/Migration-Hero
0
1[
2 {
3 "platform": "Senet",
4 "type": "docs",
5 "source": "https://docs.senetco.io/rp/gw/gwReleases/",
6 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nGateway Release Notes\n02_24_28 - Release Notes\n02_22_10 - Release Notes\n02_21_10 - Release Notes\n02_20_14 - Release Notes\nGateway Release Notes\nInformation on key features and changes made to the Senet Packet Forwarder\n02_24_28 - Release Notes\nMultitech\nAdded support for MultiTech mPower OS version 6.3.0+.\nAdded support for MultiTech Conduit IP67 200 series Gateways.\nAdded support for MultiTech mCard MTAC-003 LoRa accessory cards.\n02_22_10 - Release Notes\nTektelic\nAdded support for Tektelic Micro 8-Channel indoor BSP v4.0.2+.\nAdded support for Tektelic Macro 16-Channel outdoor BSP v5.1.5.\nAdded support for Tektelic Mega 64-Channel outdoor BSP v5.0.2+.\nAdded support for Tektelic Enterprise 8-Channel outdoor BSP v2.0.1+.\nAdded support for Tektelic Enterprise 8-Channel outdoor BSP v2.1.2+.\nAddressed an issue decoding GPS locations from Tektelic Gateways in the Eastern Hemisphere.\nAddressed an issue where querying the cellular modem statistics may fail with Tektelic Gateways.\nAdded support for detecting and reporting Tektelic MQTT Bridge operation to the LoRa Network Server.\nAdded auto-removal of mqtt-bridge and Tektelic Packet Forwarder upon installation of the Senet Packet Forwarder RAN image.\n02_21_10 - Release Notes\nMultitech\nAdded support for MultiTech mPower OS version 6.0+.\nAdded support for detecting alternate LoRa Packet Forwarders. This condition is reported to the Network Server under gateway System Events.\nAddressed an issue where a show-support may not upload to the LoRa Network Server.\nImplemented a change to persist the Senet Packet Forwarder installation during MultiTech mPower OS and patch updates.\n02_20_14 - Release Notes\nMultitech\nAddressed an issue where installation may use SD Card if present.\nAdded support for re-configuration of active cellular interfaces.\nAdded support for sending GPS data to the Network Server on GPS-capable models.\nAddressed an issue where the Gateway OS version reported to the Network Server may be inaccurate.\nAddressed and issue where the Senet Forwarder application may not stop during an uninstall.\nAdded support for reporting Gateway temperature to the Network Server on models that provide this data.\nAdded an option to disable the firewall on Gateways with the RAN image installed\nTektelic\nAdded support for Tektelic Micro 8-Channel indoor BSP v3.3.7+.\nAdded support for Tektelic Enterprise 8-Channel outdoor BSP v1.1.6+.\nAdded support for Tektelic Macro 16-Channel outdoor BSP v4.3.6+.\nAdded support for Tektelic Mega 64-Channel outdoor BSP v4.3.8+.\nAddressed an issue where upon a cold start it may take up to ten minutes to start the Senet Packet Forwarder.\nAdded an option to disable the firewall on Gateways with the RAN image installed\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
7 },
8 {
9 "platform": "Senet",
10 "type": "docs",
11 "source": "https://docs.senetco.io/ap/mgmt/#device-update",
12 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nOverview\nStates & Transitions\nDevice Fields\nToken Management (MFA)\nRegister Devices\nActivate Devices\nDeactivate Devices\nDevice Update\nTransferring Devices\nFirmware Update Over The Air (FUOTA)\nOverview\nLoRaWAN uses an AES 128 CCM security model with the End Devices and the Join Server both provisioned with the End Device’s root key(s). The Join Server is used to authorize the Device and distribute session keys to the Network Server and Application Server while the End Device generates these same session keys locally. Typically, the manufacturer of Devices supporting Over-The-Air Activation (OTAA) will supply the Application Provider a manifest containing the Device EUI (DevEUI), Join Server EUI, (JoinEUI sometimes called the AppEUI) and Root Key(s) (LoRa v1.0 AppKey, LoRa v1.1 NwkKey and AppKey). Note, as a best practice, the JoinEUI should be specific to the Application Provider. Registration is the process of loading the DevEUI/RootKey(s) and associated meta data for each End Device on to the Join Server. The Activation process informs the network server that the Device is allowed on the network.\nTo activate a Device on the network it must be assigned to aContract. This Device to Contract association establishes a billing relationship and the communications entitlement for a pool of Devices. When Contracts are established, Contract IDs are assigned by Senet and made available to associate in the Registration and Activation processes. When a Device is Activated it transitions to a billable state.\nRegistration and Activation may be accomplished using the UI in the Application Provider Portal or via API with JSON. It is important to note that once a Device has been Joined to the network the Contract assigned to the Device cannot be changed. In the event a Contract was incorrectly assigned, Support can assist with changing the Contract associated with Devices.\nStates & Transitions\n\nDevice Fields\nThe table below details the purpose, expected data type and format of a Device's data fields. The table also identifies when the fields can be set in relation to the Device State Transitions described above.\nDevice Contracts can only be changed when Transitioning to Deactivated or Activated.\nState Transitions cannot be repeated. Example: an Activated Device cannot be Activated.\n* Only Devices which have Joined the Network.\n** Only Devices which have not Joined the Network.\n*** Only Devices configured for ABP - Activation by Personalization.\nToken Management (MFA)\nRegistration requires multi-factor authentication: an authentication token must be requested and then submitted. A token may be requested either during the registration process (see below) or directly from theDevice Managementtable. In response to a token request, an email with a token (six-digit code) is emailed to the requesting user account. By default the token has a one-hour lifetime and a single use count, however the token lifespan can be configured as part of the request process.\nAn Application can have only one active token. Once consumed (use count runs out) or expired, a new one must be requested. Successful requests always replace the current token, regardless of expiration or any remaining uses.\nNote\nDevice Activation and Device Deactivation do not require multi-factor authentication.\nTo get started, navigate to theDevice Managementtable.\nClick thetab\nIf there are multiple applications; from the EUI column click the application EUI to navigate to the Application Detail View. Otherwise the view will automatically be directed to the Application Detail View.\nFrom the Application Detail View, Navigate to the Device Management view by clicking on thebutton\nFrom theDevice Managementtable, select the uploadbutton to start the registration process.\nRegister Devices\nA registered Device must be Activated before it can join the network.\nA Device must be registered before it can be Activated.\nThe Application EUI and Join Server EUI for the Devices must be confirmed during Registration, Activation and Deactivation to verify the association for billing and accounting purposes.\nTo Register Devices, select theRegisteraction, and click the ellipsis to upload a CSV file.\n\nEntering an Authentication Token\nWhen the Upload File button is clicked, the following dialog allows the user to request and submit a token. When a token request is made, the settings for the token lifespan can be configured. These are the same settings that are managed from theApplicationstable.\n\nClicking theRequest Tokenbutton triggers display of the token configuration fields.\n\nNote\nIf multiple users manage the same Application, token management must be coordinated.\nAfter a file is selected and a valid token supplied, a confirmation dialog appears.\nDuring Registration the user is required to provide theActivation Typeand may optionally assign both aDevice ProfileandContract.\nActivation Typeidentifies the join-method used by the Devices being registered, indicating to the Network Server the types of required and optional personalization data in the file being uploaded. The default is 'OTAA - Over The Air Activation'.\nOptionally, theDevice ProfileandContractmay be set. If either association is unknown at the time, 'Do Not Set' may be selected as the may alternately be assigned during Activation. If noContractorDevice Profileis selected as part of either operation, the default settings for each - as configured for the Device's associated Application - are set when the Devices join the Network.\nLastly, informational tags may be applied to the Devices being registered.\n\nNote\nWhen the Activation Type is set to ABP, the NS will provision - as part of Registration - one or both of the session keys (nwkSKey and appSKey) for each Device if not found in the supplied CSV file.\nSelectYesto proceed registering the Devices in the selected file.\nOnce the file's data is validated, a summary is displayed.\nIf the upload fails or the data is invalid, error feedback is provided.\n\nDuplicate Device registrations are specifically not allowed. Attempts to register Devices on more than one Application or Join Server will fail as shown here:\n\nExample LoRaWAN 1.0.X OTAA Registration CSV Format\n####################################################\n# Required Fields: devEui, appKey, \n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n####################################################\ndevEui, appKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui, appKey, \n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n####################################################\ndevEui, appKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.1+ OTAA Registration CSV Format\n####################################################\n# Required Fields: devEui, appKey, nwkKey\n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n####################################################\ndevEui, appKey, nwkKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,D10922FA7B117BE10B38C06C04A363BB,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,9309DD725B3864DDF7ED6B9545E2AA16,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui, appKey, nwkKey\n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n####################################################\ndevEui, appKey, nwkKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,D10922FA7B117BE10B38C06C04A363BB,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,9309DD725B3864DDF7ED6B9545E2AA16,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.0 ABP Only or OTAA with Active Session Registration CSV Format\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, nwkSKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n# Optional OTAA Fields: appKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, nwkSKey, appKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, nwkSKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n# Optional OTAA Fields: appKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, nwkSKey, appKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.1+ ABP Only or OTAA with Active Session Registration CSV Format\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n# Optional OTAA Fields: appKey, nwkKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, appKey, nwkKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,DFAE2CC785B7665EB2F5F680BA2F7A53,3C8994815DD251CBB40D7E2174A6224C,710BC6BC680AA8D6E9383CA7EA4F5427,0B76FAB3C1A189403C145BF1FCB08647,5106140251972BDF23D2140BB67802FB,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,779959C52180C5D700F8A64E6A9A9828,62D7D043B482727294FC63EE68BE6D35,C7A0FF1B1BF0CB09A4D3CC5CC9D72FAF,E4FFBA476D97E00D7E38EFD6BF883A32,03B79A7CDC2554CA9669C0DE243015B1,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n# Optional OTAA Fields: appKey, nwkKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, appKey, nwkKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,DFAE2CC785B7665EB2F5F680BA2F7A53,3C8994815DD251CBB40D7E2174A6224C,710BC6BC680AA8D6E9383CA7EA4F5427,0B76FAB3C1A189403C145BF1FCB08647,5106140251972BDF23D2140BB67802FB,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,779959C52180C5D700F8A64E6A9A9828,62D7D043B482727294FC63EE68BE6D35,C7A0FF1B1BF0CB09A4D3CC5CC9D72FAF,E4FFBA476D97E00D7E38EFD6BF883A32,03B79A7CDC2554CA9669C0DE243015B1,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nDuplicate Application Keys\nDuplicate Application keys are allowed but strongly discouraged as a potential security risk. If duplicate Application keys are detected in the CSV file, the following warning is displayed:\n\nActivate Devices\nAn Activated Device may join the network and start uplinking.Devices in this state are not considered \"Active\" until they have joined the network. Once a Device has joined the network, it appears in theDevicestable.\nRequired column names in the CSV header:devEui\nPopulate thedevEuicolumn with previously registered or Deactivated Device EUIs.\nSelectActivatein the action, and click the ellipsis to upload a CSV file of previously registered Devices.\n\nAfter a file is selected a confirmation dialog appears.\nThis dialog requires the user to choose a Contract and Device Profile for the Devices in the csv file.\nOptionally, informational tags may be updated or applied to this group of Devices.\nSelectYesto upload the selected file.\nNote\nDevice Profiles and Contracts are set when a Device joins the network. Prior to joining, these values can be preselected. The value selected during activation will override the value selected during registration. If \"Current or Default\" is selected, the value assigned during registration will be used. If a Device was not assigned a Contract or Profile during registration, its Application's defaults will be used. After a Device joins, the Contract can be updated through deactivation.\n\nThe results of the activation are shown after the file is processed.\n\nNote\nIf not included in the CSV at Registration, Activation for ABP Devices will provision a devAddr for each device. Since the NS may have previously provisioned the nwkSKey and appSKey parameters as part of Registration, the Activation Results dialog allows the user to export of all the devices' ABP data to CSV formatted file. The 'Export' button is available only when the Activation is completed by uploading the CSV file used for Registration.\n\nExample LoRaWAN 1.0.X OTAA Activation CSV Format\n####################################################\n# Required Fields: devEui, appKey, \n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n####################################################\ndevEui, appKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui, appKey, \n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n####################################################\ndevEui, appKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.1+ OTAA Activation CSV Format\n####################################################\n# Required Fields: devEui, appKey, nwkKey\n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n####################################################\ndevEui, appKey, nwkKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,D10922FA7B117BE10B38C06C04A363BB,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,9309DD725B3864DDF7ED6B9545E2AA16,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui, appKey, nwkKey\n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n####################################################\ndevEui, appKey, nwkKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,D10922FA7B117BE10B38C06C04A363BB,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,9309DD725B3864DDF7ED6B9545E2AA16,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.0 ABP Only or OTAA with Active Session Activation CSV Format\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, nwkSKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n# Optional OTAA Fields: appKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, nwkSKey, appKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, nwkSKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n# Optional OTAA Fields: appKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, nwkSKey, appKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.1+ ABP Only or OTAA with Active Session Activation CSV Format\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n# Optional OTAA Fields: appKey, nwkKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, appKey, nwkKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,DFAE2CC785B7665EB2F5F680BA2F7A53,3C8994815DD251CBB40D7E2174A6224C,710BC6BC680AA8D6E9383CA7EA4F5427,0B76FAB3C1A189403C145BF1FCB08647,5106140251972BDF23D2140BB67802FB,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,779959C52180C5D700F8A64E6A9A9828,62D7D043B482727294FC63EE68BE6D35,C7A0FF1B1BF0CB09A4D3CC5CC9D72FAF,E4FFBA476D97E00D7E38EFD6BF883A32,03B79A7CDC2554CA9669C0DE243015B1,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n>>>>>>> 833b5a8 (Case 16856: Docs - update registration examples.)\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n# Optional OTAA Fields: appKey, nwkKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, appKey, nwkKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,DFAE2CC785B7665EB2F5F680BA2F7A53,3C8994815DD251CBB40D7E2174A6224C,710BC6BC680AA8D6E9383CA7EA4F5427,0B76FAB3C1A189403C145BF1FCB08647,5106140251972BDF23D2140BB67802FB,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,779959C52180C5D700F8A64E6A9A9828,62D7D043B482727294FC63EE68BE6D35,C7A0FF1B1BF0CB09A4D3CC5CC9D72FAF,E4FFBA476D97E00D7E38EFD6BF883A32,03B79A7CDC2554CA9669C0DE243015B1,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n>>>>>>> 833b5a8 (Case 16856: Docs - update registration examples.)\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nDeactivate Devices\nOnce Deactivated, Devices cannot join or rejoin the network. However, a previously joined Device can continue uplinking after deactivation.\nA Device must be registered before it can be Deactivated.\nA Device that is administratively Deactivated but continues to communicate on the network is in an active billing state. To avoid billing for Deactivated Devices, they must not be heard by the network for the entire billing cycle.\nRequired column names in the CSV header:devEui\nPopulate thedevEuicolumn with previously Activated or registered Device EUIs.\nSelectDeactivatein the action, and click the ellipsis to upload a CSV file of previously registered or Activated Devices.\n\nAfter a file is selected a confirmation dialog appears. This dialog requires the user to choose a Contract for the Devices in the csv file. The Device's current Contract can be used by selectingCurrent.\nNote\nThe Contract can be updated if the Devices are Activated from the Deactivated state.\n\nThe results of the deactivation are shown after the file is processed.\n\nExample Deactivation CSV Format\n####################################################\n# Required Fields: devEui\n####################################################\ndevEui\nAA11111F00000001\nAA11111F00000002\n####################################################\n# Required Fields: devEui\n####################################################\ndevEui\nAA11111F00000001\nAA11111F00000002\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nDevice Update\nUpload a CSV file to update Device fields for all Registered and Activated Devices. The Devices' latitude, longitude, tags, metadata, devType, devClass, fwVer, appKey and nwkKey fields can be edited. From theDevicestable, select the uploadbutton to display the window below.\nApplication Keys are updated from theDevice Managementtable using the same process. Click on thebutton to perform a key update.\n\nWhen thebutton is clicked, a file upload window will be displayed. After a file is selected, click on theUpload Fileto proceed.\n\nTags in the update can append, replace or delete existing tags based on the selected operation. The tags can be specified for individual Devices using a tags column in the csv file or for the full set of Devices using the tags input. The uploaded latitude and longitude will always replace the existing Device data. SelectYesto upload the previously selected file.\nIf the upload succeeds and the data is valid, an upload summary and any messages from the server will be displayed. If the upload fails or the data is invalid, an error message will be displayed. Devices included in the CSV will only be skipped if they do not exist.\nExample Update CSV Format\n###################################################################################\n# Required Fields: devEui\n# Optional Fields: appKey, nwkKey, mcRootKey, \n# appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey\n# fCntUp, fCntDown, lat, lng, tags, metadata, devType, devClass, fwVer, txPeriod, devProfId\n##################################################################################\ndevEui, appKey, nwkKey, mcRootKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devClass, fwVer, txPeriod, devProfId, appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey\nAA11111F00000001,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11,,,256,20,42.356959,-71.053271,tag1;tag2-LW10,metadata1,WATER_SENSOR,A,1.0.20,3600,222,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17,,,,,\nAA11111F00000002,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23,1057,90,42.356779,-71.065271,tag1;tag2-LW11,metadata2,WATER_SENSOR,B,2.1.2,86400,223,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C\n###################################################################################\n# Required Fields: devEui\n# Optional Fields: appKey, nwkKey, mcRootKey, \n# appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey\n# fCntUp, fCntDown, lat, lng, tags, metadata, devType, devClass, fwVer, txPeriod, devProfId\n##################################################################################\ndevEui, appKey, nwkKey, mcRootKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devClass, fwVer, txPeriod, devProfId, appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey\nAA11111F00000001,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11,,,256,20,42.356959,-71.053271,tag1;tag2-LW10,metadata1,WATER_SENSOR,A,1.0.20,3600,222,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17,,,,,\nAA11111F00000002,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23,1057,90,42.356779,-71.065271,tag1;tag2-LW11,metadata2,WATER_SENSOR,B,2.1.2,86400,223,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nNote\nThe appKey, nwkKey, mcRootKey, appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jsIntKey, and jsEncKey field values are 32 character hexadecimal values used to secure Device communication: they should be both distinct and uniquely defined for each Device. The values shown above should not be used; they are are provided as examples only.\nTransferring Devices\nDevices can be transferred between Join Servers and Accounts. These functions are accessed by clicking on thebutton in the Device Management view and selecting the desired type from the menu. The option to transfer a Device between Join Servers is only enabled if there are multiple Join Servers associated with the Application.\n\nTransferring Devices Between Join Servers\nSelecting the option toTransfer Devices to New Join Serverlaunches a dialog that displays the current Join Server and a dropdown containing all Join Servers currently associated with the Application. Select the desired destination Join Server, enter the EUI of the current Join Server to confirm the transfer and press the OK button to continue. If the operation is successful, the Device should appear in the Device Management table of the destination Join Server.\n\nTransferring Devices Between Accounts\nSelecting the option toTransfer Devices to Another Accountlaunches a dialog containing multiple several fields that are filled in to complete the transfer. These include:\nCurrent Application API Key (Required)\nTarget Application EUI (Required)\nTarget Application API Key (Required)\nTarget Contract ID (Required)\nTarget Profile ID (Optional)\n\nIf several Devices are selected for transfer, the operation may take some time to complete. When the dialog is opened while an ongoing transfer operation is in progress, a progress bar is shown with the current status.\n\nOnce the transfer completes, the dialog will show the final status.\n\nAdding a Device to an Unknown or Unregistered Join Server\nOccasionally it may be necessary to Register a single Device with a Join Server that has not been Registered. Such Devices can be added by selecting the Wildcard Join Server from the dropdown in the Device Management view.\n\nClick thebutton to launch the Add Device dialog.\nEnter the required Device Registration information including Device EUI, Application Key, Contract, Device Profile, and Join EUI or * if the Join EUI is not known.\nClick the Add New Device button to save the information and add the Device.\n\nOnce the information is entered and saved, the Device should appear in the Wildcard Join Server's list of Devices.\nFirmware Update Over The Air (FUOTA)\nDevice Requirements\nImplementation of LoRaWAN FUOTA Ver 1.0.0 or 2.0.0 as specified by the LoRa-Alliance's FUOTA Working Group.\nThe ability to transition from Class A mode to either Class C or B multicast operation and back again to Class A.\nFunctionality to manage the additional power consumption associated with large data transport operations.\nOS-level primitives and on-board memory to support receiving and storing the update file.\nA methodology for replacing some or all of its running image\nNote\nReference implementations are available fromStackforceandArm Mbed.\nResponsibilities\nLoRaWAN and Regulatory (FCC, ETSI, etc) certification may be impacted by a firmware update.\nDevice vendors must work with their radio-module manufacturers to determine support for the FUOTA protocol layers and whether the radio module itself can be updated by either the host processor or the application stack running on the module. Requirements may be simpler if updates only involve a configuration file rather than an entire (or partial) firmware image.\nApplication Providers must have a methodology for identifying Devices that fail an update.\nPre-Requisites\nA list of Devices to update\nA full firmware update or patch file to distribute\nA 4-byte descriptor value of the file (described inLoRaWAN Fragmented Data Block Transport Specification v1.0.0)\nProcess\nFrom the Devices table within the Application Details view, select one or more rows of Devices to update, then click the 'Firmware Update' button:\nFrom the Devices table within the Application Details view, select one or more rows of Devices to update, then click the 'Firmware Update' button:\n\nOnce the 'Update Devices' dialog launches, fill-in the form to set the image-transfer parameters. Each field is described below.Contract:The selected Contract determines how the Customer is billed by Senet for the FUOTA events.Start Time:The time scheduled to initialize the firmware update. A minimum of 3 successful downlinks are required to set up the multicast group. This time must accommodate the largest uplink interval among the group's Devices as well as consider potential packet loss.NoteThe progression of multicast setup downlinks [McGroupSetup --> McGroupCSess --> FragSessSetup] will not proceed until all corresponding answer uplinks are received.Nwk--McGroupSetupReq-->DevNwk<--McGroupSetupAns--DevNwk--McGroupCSessReq-->DevNwk<--McGroupCSessAns--DevNwk--FragSessSetupReq-->DevNwk<--FragSessSetupAns--DevFragmentation:Currently supported methods used to fragment the file:Forward Error Correction:As defined by the FUOTA specification.Retransmit:The entire file is transmitted multiple times.Redundancy:Per the Fragmentation method selected:Forward Error Correction:Redundancy is the percent of additional frames transmitted based on the frame count required to transmit the file once. For example, a redundancy of 30% for 100 frames would generate a total packet count of 130.Retransmits:Redundancy is the total number of times the file will be sent. For example, a redundancy of 1 for a 100 frames would generate a total packet count of 200.Tx Channel:Channel frequency that the file will be multicast on. Should only be modified in response to local interference on the default channel.Tx Data Rate:Data Rate that the file will be multicast at. May be modified to adjust time on air or increase the probability of success.FUOTA Version:The FUOTA version implemented by the targeted group of Devices. Versions 1.0.0 and 2.0.0 are incompatible.Multi-Package Support:This may be set to 'Enabled' if the targeted Devices support theLoRaWAN Multi Package Access Protocolas defined by LoRa-Alliance's FUOTA Working Group.Packet Delay (ms):The minimum delay allowed between transmission of the data fragment packets. Any modifications required due to regional duty-cycle restrictions will be handled by the Network.Descriptor:The 4-byte value provided to the multicast group in the FragSessSetupReq that identifies the file to be sent.Device Class:The Class-mode - either Class B or C - the targeted Devices will transition to in order to receive the file, based on their implementation(s).Max Fragment Size:The maximum fragment size allow for transmit. This setting should accommodate Devices with fragment size limitations. When set to -1, the LNS sets this value to the maximum downlink size allowed for the region.Upload File:The binary file to be multicast to the targeted Device group, using the above parameters.\nOnce the 'Update Devices' dialog launches, fill-in the form to set the image-transfer parameters. Each field is described below.\n\nContract:The selected Contract determines how the Customer is billed by Senet for the FUOTA events.\nStart Time:The time scheduled to initialize the firmware update. A minimum of 3 successful downlinks are required to set up the multicast group. This time must accommodate the largest uplink interval among the group's Devices as well as consider potential packet loss.\nNote\nThe progression of multicast setup downlinks [McGroupSetup --> McGroupCSess --> FragSessSetup] will not proceed until all corresponding answer uplinks are received.\nNwk--McGroupSetupReq-->DevNwk<--McGroupSetupAns--DevNwk--McGroupCSessReq-->DevNwk<--McGroupCSessAns--DevNwk--FragSessSetupReq-->DevNwk<--FragSessSetupAns--Dev\nNwk--McGroupSetupReq-->DevNwk<--McGroupSetupAns--DevNwk--McGroupCSessReq-->DevNwk<--McGroupCSessAns--DevNwk--FragSessSetupReq-->DevNwk<--FragSessSetupAns--Dev\nFragmentation:Currently supported methods used to fragment the file:\nForward Error Correction:As defined by the FUOTA specification.\nForward Error Correction:As defined by the FUOTA specification.\nRetransmit:The entire file is transmitted multiple times.\nRetransmit:The entire file is transmitted multiple times.\nRedundancy:Per the Fragmentation method selected:\nForward Error Correction:Redundancy is the percent of additional frames transmitted based on the frame count required to transmit the file once. For example, a redundancy of 30% for 100 frames would generate a total packet count of 130.\nForward Error Correction:Redundancy is the percent of additional frames transmitted based on the frame count required to transmit the file once. For example, a redundancy of 30% for 100 frames would generate a total packet count of 130.\nRetransmits:Redundancy is the total number of times the file will be sent. For example, a redundancy of 1 for a 100 frames would generate a total packet count of 200.\nRetransmits:Redundancy is the total number of times the file will be sent. For example, a redundancy of 1 for a 100 frames would generate a total packet count of 200.\nTx Channel:Channel frequency that the file will be multicast on. Should only be modified in response to local interference on the default channel.\nTx Data Rate:Data Rate that the file will be multicast at. May be modified to adjust time on air or increase the probability of success.\nFUOTA Version:The FUOTA version implemented by the targeted group of Devices. Versions 1.0.0 and 2.0.0 are incompatible.\nMulti-Package Support:This may be set to 'Enabled' if the targeted Devices support theLoRaWAN Multi Package Access Protocolas defined by LoRa-Alliance's FUOTA Working Group.\nPacket Delay (ms):The minimum delay allowed between transmission of the data fragment packets. Any modifications required due to regional duty-cycle restrictions will be handled by the Network.\nDescriptor:The 4-byte value provided to the multicast group in the FragSessSetupReq that identifies the file to be sent.\nDevice Class:The Class-mode - either Class B or C - the targeted Devices will transition to in order to receive the file, based on their implementation(s).\nMax Fragment Size:The maximum fragment size allow for transmit. This setting should accommodate Devices with fragment size limitations. When set to -1, the LNS sets this value to the maximum downlink size allowed for the region.\nUpload File:The binary file to be multicast to the targeted Device group, using the above parameters.\nWhile the Device sessions are initializing, a 'Job Status: Queued' indicates when the Firmware Update is targeted to begin:\nWhile the Device sessions are initializing, a 'Job Status: Queued' indicates when the Firmware Update is targeted to begin:\n\nApplication commands are sent to setup the multicast and fragmentation sessions with the Devices:\nApplication commands are sent to setup the multicast and fragmentation sessions with the Devices:\n\n\nThe Status of the Firmware Update is updated as Fragments are sent:\nThe Status of the Firmware Update is updated as Fragments are sent:\n\nOnce all Fragments are sent, the Update status reflects the completed Firmware Update:\nOnce all Fragments are sent, the Update status reflects the completed Firmware Update:\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
13 },
14 {
15 "platform": "Senet",
16 "type": "docs",
17 "source": "https://docs.senetco.io/dev/gw/Registration",
18 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nGateway Registration\nGateway Communication Ports in Use\nGateway Registration Reset\nGateway Registration\nGetting your Gateway connected to the Senet network is as simple as following the directions below:\n1.Register the Gateway through the Senet Portal.\nDashboard Table View:Click on the add buttonbelow the Gateways Table.DashboardTile View:Click on the add buttonnext toDevices & Gatewaysto display the following window. Click on the image belowGateway.\nDashboard Table View:Click on the add buttonbelow the Gateways Table.\nDashboardTile View:Click on the add buttonnext toDevices & Gatewaysto display the following window. Click on the image belowGateway.\nTheRegister Gatewaywindow will appear. Follow the step-by-step instructions.\nTheRegister Gatewaywindow will appear. Follow the step-by-step instructions.\nOnce registration is complete the Gateway will be displayed in the Portal Dashboard with the current registration status (this may require a refresh of the browser).\nOnce registration is complete the Gateway will be displayed in the Portal Dashboard with the current registration status (this may require a refresh of the browser).\n2.Install Senet Gateway Software\nSkip this step if using the Semtech packet forwarder or Basic Station software. This step is only necessary when installing the Senet packet forwarder.\nSeeSupported Gatewaysfor specific instructions.\n3.Verify Registration\nFrom the Portal Dashboard the Gateway's registration status will change from \"Pending Approval\" to \"Approved\" or \"Registered\" state when final network provisioning has been completed. When the Gateway begins to communicate on the network the extended status will change to “Active” (this may also require a refresh of the browser).\n\nGateway Communication Ports in Use\nBelow are tables of ports used by the Gateway to communicate with the Senet Network, depending on which packet forwarding software is configured. The included domain and port information can be used for whitelisting these communications on a network.\nSemtech Basic Station will use ports 6042,6044 or 6038,6040, depending on the authentication mode configured.\nGateway Registration Reset\nWhen a Gateway experiences a connection issue, reinstalling the Senet packet forwarder is a typical first action to remedy the problem. However, this may strand the Gateway, leaving it unable to connect to the network. To streamline this process a Gateway can be placed into a registration-reset state, allowing the Gateway to reconnect after an install / reinstall. Once in this state, connectivity to the network will be available for up to five minutes since the last registration request.\nWarning: If this workflow is used for a Gateway currently on the network, it will be disconnected. It is important to ensure a Gateway is attempting re-register before placing it into the registration-reset state.\nThis workflow can be initiated from the Dashboard's tile view: click theRegister Reset Buttonin the Gateway tile view or table view to begin.\n\n\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
19 },
20 {
21 "platform": "Senet",
22 "type": "docs",
23 "source": "https://docs.senetco.io/ap/#device-management",
24 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
25 },
26 {
27 "platform": "Senet",
28 "type": "docs",
29 "source": "https://docs.senetco.io/ap/index.html",
30 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
31 },
32 {
33 "platform": "Senet",
34 "type": "docs",
35 "source": "https://docs.senetco.io/rp/adminContacts/",
36 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nContacts\nCreating Contacts\nEditing Contacts\nDeleting Contacts\nContacts\nThe Contacts view provides information for personnel associated with a Base Station. Multiple resources are added through this view; for example, primary and/or secondary contacts who provide Base Station services like lease agreements or site maintenance.\n\nCreating Contacts\nNew contacts are created by clicking thebutton. This launches the Create Contact dialog where new contact information is entered.\n\nEditing Contacts\nAn existing contact is edited by selecting a row in the table and clicking thebutton.\n\nDeleting Contacts\nA Contact is deleted by selecting a row in the table and clicking on thebutton.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
37 },
38 {
39 "platform": "Senet",
40 "type": "docs",
41 "source": "https://docs.senetco.io/ap/#device-contracts",
42 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
43 },
44 {
45 "platform": "Senet",
46 "type": "docs",
47 "source": "https://docs.senetco.io/ap/devmap/",
48 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nDevice Maps\nDevice Statistics\nService Metrics\nFiltering Devices\nFiltering Map Labels\nDevice Maps\nDevice Maps are used to visualize End Devices locations.\n\nBy default, an Application may have too many devices to be displayed on the map. If this is the case a warning symbol will be displayed on the map refresh buttonindicating the user is zoomed out too far.\nAfter zooming in the Warning icon is removed from the map refresh button. This warning icon will disappear as soon as the zoom level is appropriate.\n\nThe square markers represent the GPS coordinates for the devices on a map.\nDevice Statistics\nThe map has a Device statistics header that shows RSSI, SNR, PSR,and Data Rate collected from the previous day. Redundancy is the average number of Base Stations per Device. Each statistic can be selected to update the status color of the Devices to match the statistic. For example, selecting the RSSI statistic will refresh the map and all devices will be colored by the RSSI value. The current value of a statistic is shown in the Information dialog shown by right-clicking a Device marker.\n\nClicking on a legend item from the selected statistic chart will toggle the display of the Devices for that category of the statistic. This also applies to the Service Metrics charts below.\nBefore selection of the blue legend item in the SNR chart:\nAfter selection of the blue legend item in the SNR chart:\n\nWhen Base Station Analysis is active, the Redundancy Statistic is replaced with a Location statistic. The Location statistic shows the average number of Devices heard by the target Base Station for the previous day.\nWhen a Planning Map is active, an additional set of statistics including Entries and Path Quality is visible from the header. The Entries statistic shows the breakdown of Devices and Base Stations included on the Planning Map. The Path Quality statistic shows threshold groupings by Path Quality of all Devices on the Map.\n\nThe threshold values for the chart statistics are as follows:\nService Metrics\nThe Map's Device Statistics panel provides statistics that categorize Device reporting behavior for the selected time period. By default this is configured to be the last 31 days, but can be set to an arbitrary number of days less than 31. The data for a specific month within the last year may also be selected. Additional filtering of the Devices by the last heard time is provided to exclude inactive Devices from inclusion in the Service Metrics calculations. The charts can be selected to update the metric color of the Device pin.\n\nService Metrics Options\nThe gear button in the lower right corner of the Service Metrics tab launches a dialog for configuration of these values.\n\n1/2/3 Day Chart\nTo help characterize the group of devices within the given Map view, device activity is measured using 1, 2, and 3 day periods: i.e. whether activity occurs every day, every other day, or every third day.\nThe first chart in the panel reflects counts of Devices whose activity is unique to each period-based metric. The green, blue and yellow sections represent the unique Device counts for the 1, 2, and 3 day periods respectively. The red section represents the count of Devices that have no activity occurring on a basis corresponding to these metrics.\nExample:\n\nNote\nThis chart does not include overlapping counts: e.g. where Devices with activity every day are also counted in activity every 2 and 3 days, etc.\n1 Day, 2 Day, 3 Day Charts\nThe remaining Charts present three data points for each of the period-metrics:\nCenter NumberPercentage of the total device population whose activity qualifies for the period-metric.\nCenter NumberPercentage of the total device population whose activity qualifies for the period-metric.\nGreen SegmentCount of Devices whose activity qualifies for the period-metric.\nGreen SegmentCount of Devices whose activity qualifies for the period-metric.\nRed SegmentCount of Devices whose activity does not qualify for the period-metric.\nRed SegmentCount of Devices whose activity does not qualify for the period-metric.\nNote\nIndividual period-metric charts include overlapping counts: e.g. where Devices with activity every day are also counted in activity every 2 and 3 days, etc.\nExamples:\nFiltering Devices\nThe Devices shown on the map may be filtered to those matching a specific Tag, one or more Applications and one or more Contracts.\nTo apply Device filters to the map:\nClick thebutton\nClick thebutton\nSelect the \"Filter Devices\" menu item\nSelect the \"Filter Devices\" menu item\nUpdate the Filter Devices dialog with the desired filters and click \"Apply\" to update the map to show only the Devices that match the applied filters.\nUpdate the Filter Devices dialog with the desired filters and click \"Apply\" to update the map to show only the Devices that match the applied filters.\n\nFiltering Map Labels\nRoad and point of interest features and labels are displayed by default on the Map. These can be disabled for a cleaner Map appearance by unselecting the Labels checkbox under the Map control.\n\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
49 },
50 {
51 "platform": "Senet",
52 "type": "docs",
53 "source": "https://docs.senetco.io/dev/streaming/TCP/",
54 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nTCP Socket Connection\nPlatform Setup\nNotifier Setup\nTCP Socket Connection\nThe Senet Network can be instructed to forward received messages to a specified IP and Port on a TCP Socket connection. The forwarder will be expecting a TCP Listener to be available to accept incoming socket connections. It is the responsibility of the user to provide a correctly configured Socket Listener for incoming socket connections. Through the Senet Development Portal, users can configure the Notification Target option as TCP Socket and supply the Socket IP/Hostname as well as the Port. The messages are sent serially (in JSON format) on an individual socket connection, i.e. Socket.Open, Socket.Write, Socket.Close.\nPlatform Setup\nImplementation specific.\nNotifier Setup\nPut the Socket IP and Port of your listening server into theNotification Targetfields.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
55 },
56 {
57 "platform": "Senet",
58 "type": "docs",
59 "source": "https://docs.senetco.io/rp/gwReg/#base-station-registration",
60 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nBase Stations\nIntegration Overview\nSupported Base Stations\nBase Station Registration\nBase Stations\nIntegration Overview\nIn order to integrate your Base Station with Senet's Network, it must be on-boarded. This process involves:\nRegistration.\nRegistration.\nInstallation & configuration of a supported packet forwarder.\nInstallation & configuration of a supported packet forwarder.\nOnce registration is complete your Base Station's packet forwarder will communicate with Senet's network.\nSenet Packet Forwarder for RAN providers\nThis integration option is applicable to Radio Access Network (RAN) Providers deploying Base Stations at scale. This option increases security over the standard Senet Packet Forwarder, which includes restricting local user accounts and preventing remote access.\nNote\nBase Station Registration and Software Installation is only required for devices that are new to the Senet Network. If Senet provided the Base Station, no further action is necessary.\nSupported Base Stations\nFor a list of supported Base Stations please see theBase Stations Softwaredocumentation.\nBase Station Registration\nRegistration for RAN Providers\nLog into the Portal with your RAN Provider account.\nFrom the landing page click the + button to add a new Base Station.\nYou will be presented with a Create Base Station window.\nSelect the Model type of the Base Station to connect to the network.\nInput the serial number for the Base Station. For more information on how to obtain the serial number and the proper format pleases see the Base Station specific documentation.\nAllocate an EUI for the Base Station to be used. If the Base Station does not have an EUI (most common) click the button to allocate an EUI from Senet's EUI registry.\nConfirm EUI Allocation\nOptionally set a name for the Base Station.\nOptionally set the Admin Status for the Base Station.\nSelect the channel plan to be used for this Base Station. Default is US Channel Plan.\nSelect the RX channels to be used, this should be properly defaulted. It is not recommended to change these values.\nAdvanced - Set a Channel Mask to disable specific channels.\nOptionally set the Alert Level for the Base Station.\nSelect the type of Base Station being added to the network.\nFill in the installation info for where and how the Base Station will be installed\nIf you do not know the GPS coordinates of the Base Station, click the button to automatically geo-locate the coordinates based on the earlier provided address.\nClick Save, once complete your Base Station will be added to the table.\nIf you have not done so, install the RAN provider software on the Base Station. The install instructions can be found in the Base Station specific documentation.\nWhen the Base Station is online with the software properly installed and talking to the network, you will see a green status indicator.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
61 },
62 {
63 "platform": "Senet",
64 "type": "docs",
65 "source": "https://docs.senetco.io/ap/appUsage/#device-contracts",
66 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nUsage & Accounting Data\nUsage Data and File Formats\nUsage Reports\nDevice Contracts\nUsage & Accounting Data\nAccounting data is kept for each Application and its Devices. This includes the number of Devices Activated, Joined and Deactivated; all Uplink and Downlink communication; as well as new Security Sessions. After being aggregated by Customer Contract ID, this data is used by the Billing and Rating process to generate invoices. The view below provides a summary of activity for Yesterday, Current Month, and Last Month.\n\nThe Usage Data statistics can be scoped to a specific contract by selecting it from the dropdown menu located in the navigation bar.\n\nField Descriptions\nUsage Data and File Formats\nOn the first of each month an Application Details file is generated for the prior month and made available for viewing/downloading. These contain detailed accounting information for Devices active during the previous month. |\nApplication Details File\nThe Application Details file includes network usage statistics for each Device associated with the application. The table below is an example of this usage file. The fields in the file are defined below. Device Service Metrics, (Metric A, B, and C) help characterize Device performance over the month.\n\nApplication Contracts File\nThe Contracts file includes aggregate usage statistics for all Contracts associated with the Application. The table below is an example of this usage file. The fields in the file are defined below.\n\nApplication Summary File\nThe Summary file includes aggregate usage statistics for all Devices associated with the Application. The table below is an example of this usage file. The fields in the file are defined below.\n\nUsage Reports\nUsage reports provide presentations of statistical trends in chart or table form. The reports are categorized by related statistics such as Devices in the Operational Summary, to provide strategic insight into the overall status of the Application.\nMessage Summary\nThe \"Message Summary\" shows a set of communication-specific charts for the Application. Each chart displays historical data for a given statistic. The time interval selection determines the aggregation period of the chart, e.g. Daily or Monthly.\n\nOnboarding Summary\nThe \"Onboarding Summary\" shows a set of charts for Devices that were added, removed, Activated, Deactivated or Registered to the Application. Each chart displays historical data for a given statistic. The time interval selection determines the aggregation period of the chart, e.g. Daily or Monthly.\n\nChecking the \"Show Combined Charts\" checkbox presents a consolidated view of the Onboarding Summary charts.\n\nOperational Summary\nThe \"Operational Summary\" shows a set of charts for Device communication activity or inactivity . Each chart displays historical data for a given statistic. The time interval selection determines the aggregation period of the chart, e.g. Daily or Monthly.\n\nChecking the \"Show Combined Charts\" checkbox presents a consolidated view of the Operational Summary charts.\n\nStacked Usage Charts\nFor those Applications with more than one Contract, selecting multiple items from the drop-down menu will update the Chart's bar columns by stacking discrete segments for each selected Contract. Whereas the default view aggregates data for all an Application's Contracts, the 'Select All' option displays the same data discretely. Tooltips for each segment in a stacked bar will reflect the corresponding Contract's value as well as the total combined value of the stacked bar. Note: the chart's display will not change for Applications with a single Contract.\nContract Multi-Select Menu\n\nDiscrete Contracts\n\nAggregated Contracts\n\nDiscrete Statistics and Contracts\n\nDevice Contracts\nA contract defines the billing rate and communications entitlement associated with a pool of Devices. When contracts are established, Contracts IDs are assigned by Senet and made available to associate in the Registration and Activation processes. Contracts are optionally assigned to Devices during the Registration Process, but it is mandatory to assign a contract during the Device Activation process. Once the Device has been Activated and has Joined the network a contract may only be updated by contactingSenet Support. When a Device is Activated it transitions to a billable state.\nThe panel below displays all of the available contracts that are associated with the Application Provider. These contracts are available to assign to your Devices during theRegistrationandActivationprocesses, the ID field maps to the contractId variable for use with the Registration/Activation API . The list of contracts is updated as new contracts are created for different engagements on the Senet Network.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
67 },
68 {
69 "platform": "Senet",
70 "type": "docs",
71 "source": "https://docs.senetco.io/ap/api/",
72 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nAPI Reference\nUplink API\nDownlink API\nDownlink API - Multicast\nDownlink API - Clear Downlinks\nDevice Onboarding APIs\nDevice Registration API\nDevice Activation API\nDevice Deactivation API\nDevice Update API\nDevice Export API\nDevice Transfer API\nTask Status API\nFUOTA API\nMulticast API\nAPI Reference\nThe Application REST APIs allow system administrators and Application Providers to send downlinks and Register/Activate/Deactivate Devices for an Application. An API key is required to authenticate API usage. API keys are created and managed in theAPI Keysview.\nResponse messages are JSON-formatted.\nTo get started with the Application APIs, see theSwagger API Documentation.\nUplink API\nDevice uplink messages heard by one or more gateways are relayed to the network server which in turn the server securely forwards the data to an IoT platform.\nFor more information on the data streaming endpoint implementation, see theSwagger Data Stream Documentation.\nApplication Payload\nIn addition to streaming the payload data (pdu), network information is included. Optionally, RF information about each transmission can be added by enabling \"Include RF Data\" in the notification target's configuration.\nThe Senet Network supports the standardJSONobject model where each object contains one-to-many key/values pairs. TheJSONobject is in the following format:\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\nNote:Senet may add additional fields during future Portal updates. Please ensure that the Application ignores any unknown fields and continue to parse the notification data. Duplicate uplinks are also available on Production with a Contract.\nAll JSON-formatted data contains the following default fields:\nFields\n* Requires contractual agreement\nExample:\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\nExample with RF Fields:\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":0,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":0,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\nBatching\nBatching is the process of delaying the forwarding of a notification to see if it can be grouped with other notifications going to the same endpoint. Batching is more efficient for both the Network Server and for the Customer's endpoint. Many messages can be transferred in the same time that it takes to transfer a single message.\nJSON Format:\nExample: Batching Disabled.Each notification is forwarded northbound to the customer individually using the JSON object model.\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}\nExample: Batching Enabled.A set of notifications received by the Network Server (within a few milliseconds of each other) are forward to the customer in a JSON Array.\n[\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}, \n{\"snr\":8.75, \"devEui\":\"000000000000000B\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.722Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-61, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":907.9, \"pdu\":\"01080100EF020012\", \"channel\":28, \"seqno\":23423}, \n{\"snr\":9.25, \"devEui\":\"000000000000000C\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.723Z\", \"joinId\":2, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-55, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.5, \"pdu\":\"01080100EF020012\", \"channel\":56, \"seqno\":34532}, \n{\"snr\":8.75, \"devEui\":\"000000000000000E\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.724Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-61, \"value1\":247, \"value2\":18, \"port\":1, \"freq\":907.7, \"pdu\":\"01080100F7020012\", \"channel\":27, \"seqno\":76453}, \n{\"snr\":10.75, \"devEui\":\"000000000000000F\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.725Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-60, \"value1\":247, \"value2\":18, \"port\":1, \"freq\":902.5, \"pdu\":\"01080100F7020012\", \"channel\":1, \"seqno\":18743}\n]\n[\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}, \n{\"snr\":8.75, \"devEui\":\"000000000000000B\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.722Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-61, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":907.9, \"pdu\":\"01080100EF020012\", \"channel\":28, \"seqno\":23423}, \n{\"snr\":9.25, \"devEui\":\"000000000000000C\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.723Z\", \"joinId\":2, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-55, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.5, \"pdu\":\"01080100EF020012\", \"channel\":56, \"seqno\":34532}, \n{\"snr\":8.75, \"devEui\":\"000000000000000E\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.724Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-61, \"value1\":247, \"value2\":18, \"port\":1, \"freq\":907.7, \"pdu\":\"01080100F7020012\", \"channel\":27, \"seqno\":76453}, \n{\"snr\":10.75, \"devEui\":\"000000000000000F\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.725Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-60, \"value1\":247, \"value2\":18, \"port\":1, \"freq\":902.5, \"pdu\":\"01080100F7020012\", \"channel\":1, \"seqno\":18743}\n]\nWhen batching is enabled, if only one message is available to be forwarded, it will still be forwarded using the batch format.\n[\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}\n]\n[\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}\n]\nDownlink API\nSenet provides a simple API for sending Application downlinks to devices. In addition to the Application Payload, users can specify the LoRa-level FPort and Confirmed settings, as well as a timeout threshold for how long the Network waits until foregoing transmission or receiving acknowledgement when expected. Downlink queues support up to 3 downlinks and are cleared in one of the following ways: transmission, timeout, a newer downlink request with the 'clear' parameter set 'True', or a separate request to theClear Downlinks API.\nNotifier endpoint implementations can leverage the Downlink API in numerous ways. For example, a downlink POST request is automatically triggered in response to an uplink notification. With low-enough round-trip time between the Notifier and its endpoint, including the 'immediate' parameter set to 'True' in the downlink request ensures the Network will send it against one of the current uplink's receive windows.\nWhen Downlink requests are successful, the response will include a unique-, numeric message identifier ('msgId'). This is distinct from the sequence number (FCntDn) allocated when a downlink is sent, allowing traceability of specific downlink Application payloads.\nAll Downlink API requests require an authorization key passed either as a URL parameter or in an authorization header. Senet API keys are 44-character alpha-numeric strings with a prefix of either “AK2:” or “AK3:”. SeeAPI Key Managementfor more information about acquiring API Authorization Keys.\nSend Downlink To Device\nhttps://api.senetco.io/rest/integration/device/sendmsg\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://api.senetco.io/rest/integration/device/sendmsg?eui=AAAAAAAAAAAAAAAA&pdu=0102030405060708090a0b0c0d0e0f&confirmed=true&port=88&timeoutMinutes=2\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://api.senetco.io/rest/integration/device/sendmsg?eui=AAAAAAAAAAAAAAAA&pdu=0102030405060708090a0b0c0d0e0f&confirmed=true&port=88&timeoutMinutes=2\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Multicast\nSend multicast downlink messages to a multicast session allowing a user specified list of Base Stations to transmit on.\nhttps://api.senetco.io/rest/integration/device/sendmcastmsg\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Clear Downlinks\nClears queued downlink messages. If a specific message ID is supplied, only that downlink will be cleared, otherwise all queued messages are cleared.\nhttps://api.senetco.io/rest/integration/device/clearmsgs\n\nPOST\n\ncurl -H\"authorization: AK2:APIKEY\"-XPOST\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\ncurl -H\"authorization: AK2:APIKEY\"-XPOST\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\n{\"clearedIds\":[00001]}\n}\n{\"clearedIds\":[00001]}\n}\nDevice Onboarding APIs\nSenet offers a series of APIs that are used to automate the process of onboarding Devices onto the Senet Network, and facilitate the management of these Devices throughout their lifecycle. The onboarding process encompasses the Registration of Devices (loading the DevEUI/RootKey(s) onto the Join Server), followed by the Activation of those Devices (authorizing the DevEUIs to Join the network). Devices may be Deactivated once they have Joined the network or prior to Joining the network, in which case a Join attempt will be prevented. Devices that Joined the network in a Deactivated state and continue to communicate on the network, remain in a billable state until the Device is no longer communicating or is forced to re-Join the network.\nThe APIs were architected with the expectation the onboarding workflows are used for bulk transactions, such that the Registration, Activation and Deactivation calls would apply to a large number of Devices. To validate the completion of the workflow, calling theTask Status APIis required to verify that the requested operation completes successfully prior to initiating another job request. Only one job request can run at a time per Application. Additional API calls initiated prior to the completion of a running job will result in a failure.\nThe Registration of 1,000 Devices would typically take around 1 second, while Registration of 10,000 Devices completes in less than 5 seconds. Activation of 1,000 Devices will take around 5 seconds and it is expected that Activation of 10,000 Devices will complete in under 40 seconds.\nPlease seeOverviewin Device Management for detailed information on the Device Registration LifeCycle along with associating Contracts and other metadata to each Device.\nDevice Registration API\nThe first step in the onboarding process, Registration accomplishes the following:\nProvisions the Device EUI-to-Root Key(s) mappings to the appropriate Join Server.\nInitial Customer Contract association for and billing.\nInitial assignment of the Device Profile for LoRaWAN management.\nNote:Registration of a Device doesnottransition it to an active billing state.\nNote:If \"Do Not Set\" is selected for eitherContractorDevice Profileduring Registration, these may set during Activation.\nNote:Registration requests must be submitted with a security token. Refer toDevice Registrationfor information about obtaining a token.\nBecause Registration may involve large amounts of data, this API works in conjunction with theTask Status API: responses to successful Registration requests contain a Task Job ID that can be used to monitor the progress of the Registration task. Although only one task can run per Application, Senet recommends ensuring previous operations are complete prior to initiating a new Device Management job.\nhttps://api.senetco.io/rest/integration/device/register\n\nPOST\n\n\n\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC1\"}\n ]}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC1\"}\n ]}\n\n\n{\"data\":[{\"devEui\":\"FFFFFFFFFFFFFFF1\",\"devAddr\":\"FFFFFFFF\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":40.7484445,\"lng\":-73.9878584,\"tags\":\"tag1\",\"devType\":\"WATER_SENSOR\"},{\"devEui\":\"FFFFFFFFFFFFFFF2\",\"devAddr\":\"FFFFFFFF\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\n . . .\n ]}\n{\"data\":[{\"devEui\":\"FFFFFFFFFFFFFFF1\",\"devAddr\":\"FFFFFFFF\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":40.7484445,\"lng\":-73.9878584,\"tags\":\"tag1\",\"devType\":\"WATER_SENSOR\"},{\"devEui\":\"FFFFFFFFFFFFFFF2\",\"devAddr\":\"FFFFFFFF\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\n . . .\n ]}\nA callback URL can be specified in the request to receive results after a bulk operation is complete. The server will POST the results in JSON format to the callback URL.\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC1\"}\n ],\n \"callback\":{ \n \"url\":\"https://example-callback.com/endpoint\",\n \"headers\":{ \n \"X-API-Key\":\"123456789abcdef\"}}}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC1\"}\n ],\n \"callback\":{ \n \"url\":\"https://example-callback.com/endpoint\",\n \"headers\":{ \n \"X-API-Key\":\"123456789abcdef\"}}}\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\",\"appKey\":\"0ABCDEF0120000010A00000012000001\",\"lat\":42.356959,\"lng\":-71.053271},{\"devEui\":\"0A00000012000002\",\"appKey\":\"0ABCDEF0120000010A00000012000002\",\"lat\":42.356779,\"lng\":-71.065271}]}'\"https://api.senetco.io/rest/integration/device/register?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\",\"appKey\":\"0ABCDEF0120000010A00000012000001\",\"lat\":42.356959,\"lng\":-71.053271},{\"devEui\":\"0A00000012000002\",\"appKey\":\"0ABCDEF0120000010A00000012000002\",\"lat\":42.356779,\"lng\":-71.065271}]}'\"https://api.senetco.io/rest/integration/device/register?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"FFFFFFFFFFFFFFF1\",\"devAddr\":\"FFFFFFF1\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":42.356959,\"lng\":-71.053271}, {\"devEui\":\"FFFFFFFFFFFFFFF2\",\"devAddr\":\"FFFFFFF2\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":42.356959,\"lng\":-71.053271}]}'\"https://api.senetco.io/rest/integration/device/register?actType=ABP&appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"FFFFFFFFFFFFFFF1\",\"devAddr\":\"FFFFFFF1\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":42.356959,\"lng\":-71.053271}, {\"devEui\":\"FFFFFFFFFFFFFFF2\",\"devAddr\":\"FFFFFFF2\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":42.356959,\"lng\":-71.053271}]}'\"https://api.senetco.io/rest/integration/device/register?actType=ABP&appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\nDevice Activation API\nActivate registered or deactivated Devices on the managed Application. An Activated Device may join the network and start uplinking.\nNote:Activating a Device transitions it to an active billing state.\nBecause Activation may involve large amounts of data, this API works in conjunction with theTask Status API: responses to successful Activation requests contain a Task Job ID that can be used to monitor the progress of the Activation task. Although only one task can run per Application, Senet recommends ensuring previous operations are complete prior to initiating a new Device Management job.\nBulk Activation\nhttps://api.senetco.io/rest/integration/device/activate\n\nPOST\n\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\"}\n ]}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\"}\n ]}\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\",\"lat\":42.356959,\"lng\":-71.053271},{\"devEui\":\"0A00000012000002\",\"lat\":42.356779,\"lng\":-71.065271}]}'\"https://api.senetco.io/rest/integration/device/activate?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\",\"lat\":42.356959,\"lng\":-71.053271},{\"devEui\":\"0A00000012000002\",\"lat\":42.356779,\"lng\":-71.065271}]}'\"https://api.senetco.io/rest/integration/device/activate?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\nIndividual Activation\nhttps://api.senetco.io/rest/integration/device/activateOne\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-XPOST\"https://api.senetco.io/rest/integration/device/activateOne?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-XPOST\"https://api.senetco.io/rest/integration/device/activateOne?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271\"\n{\n \"message\":\"Device successfully Activated\"}\n{\n \"message\":\"Device successfully Activated\"}\nDevice Deactivation API\nDeactivated Devices cannot join or rejoin the Network. Previously joined Devices that are Deactivated will continue uplinking in the context of their previously established security session\nNote:Deactivated Devices that continue communicating on the Network are in an active billing state. The Network must not hear Deactivated Devices for a complete billing cycle to prevent billing.\nBecause Deactivation may involve large amounts of data, this API works in conjunction with theTask Status API: responses to successful Deactivation requests contain a Task Job ID that can be used to monitor the progress of the Deactivation task. Although only one task can run per Application, Senet recommends ensuring previous operations are complete prior to initiating a new Device Management job.\nhttps://api.senetco.io/rest/integration/device/deactivate\n\nPOST\n\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\"},\n { \n \"devEui\":\"123000000000ABC1\"}\n ]}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\"},\n { \n \"devEui\":\"123000000000ABC1\"}\n ]}\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\"},{\"devEui\":\"0A00000012000002\"}]}'\"https://api.senetco.io/rest/integration/device/deactivate?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\"},{\"devEui\":\"0A00000012000002\"}]}'\"https://api.senetco.io/rest/integration/device/deactivate?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\nDevice Update API\nUpdate fields of Devices that have joined on the managed Application. The Devices' latitude, longitude, tags, metadata, devType, devClass, fwVer, appKey and nwkKey fields can be edited. Tags in the update can append, replace or delete existing tags based on the selected operation. The tags can be specified for individual Devices in the JSON data or for the full set of Devices in the request by using the tags parameter. The latitude and longitude values in the JSON will always replace the existing Device data.\nOnly one task per Application is allowed to run at the same time. The response of a successful request is a URL to GET the status of the update task. SeeTask Status APIfor more information.\nhttps://api.senetco.io/rest/integration/device/update\n\nPOST\n\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\n \"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\n \"lat\":43.0775992,\n \"lng\":-70.7596765,\n \"tags\":\"tag1,tag2\",\n \"devType\":\"WATER_SENSOR\",\n \"devClass\":\"CLASS_B\",\n \"fwVer\" :\"1.0.0\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2\",\n \"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2\", \n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\",\n \"devClass\":\"CLASS_C\",\n \"fwVer\" :\"1.0.0\"}\n ]}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\n \"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\n \"lat\":43.0775992,\n \"lng\":-70.7596765,\n \"tags\":\"tag1,tag2\",\n \"devType\":\"WATER_SENSOR\",\n \"devClass\":\"CLASS_B\",\n \"fwVer\" :\"1.0.0\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2\",\n \"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2\", \n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\",\n \"devClass\":\"CLASS_C\",\n \"fwVer\" :\"1.0.0\"}\n ]}\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"123000000000ABC0\",\"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\"lat\":43.0775992,\"lng\":-70.7596765,\"tags\":\"tag1,tag2\",\"devType\":\"WATER_SENSOR\",\"devClass\":\"CLASS_B\",\"fwVer\":\"1.0.0\"},{\"devEui\":\"123000000000ABC1\",\"lat\":40.7484445,\"lng\":-73.9878584,\"tags\":\"tag1\",\"devType\":\"WATER_SENSOR\",\"devClass\":\"CLASS_C\",\"fwVer\":\"1.0.0\"}]}' -XPOST\"https://api.senetco.io/rest/integration/device/update?appEui=AAAAAAAAAAAAAA01&tagsOperation=APPEND\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"123000000000ABC0\",\"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\"lat\":43.0775992,\"lng\":-70.7596765,\"tags\":\"tag1,tag2\",\"devType\":\"WATER_SENSOR\",\"devClass\":\"CLASS_B\",\"fwVer\":\"1.0.0\"},{\"devEui\":\"123000000000ABC1\",\"lat\":40.7484445,\"lng\":-73.9878584,\"tags\":\"tag1\",\"devType\":\"WATER_SENSOR\",\"devClass\":\"CLASS_C\",\"fwVer\":\"1.0.0\"}]}' -XPOST\"https://api.senetco.io/rest/integration/device/update?appEui=AAAAAAAAAAAAAA01&tagsOperation=APPEND\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevUpdateJobReq:AAAAAAAAAAAAAA01\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevUpdateJobReq:AAAAAAAAAAAAAA01\"}\nDevice Export API\nExport Device data from the managed Application. The data returned from the API is formatted for a CSV file.\nhttps://api.senetco.io/rest/integration/device/csvExport\n\nGET\n\nThe following Device fields can be used with the 'fields' parameter:\ndevEui,contract,tags,metadata,state,registrationDate,activationDate,deactivationDate,lastHeardFrom,lastJoinTime,\nfirstJoinTime,yestBstns,yestPsr,yestAvgRssi,yestAvgSnr,lat,lng,profId,devType,devAddr,estLat,estLng,txPeriod,\ntxPower,curDr,adrChg,fwVer,serviceMetrics,metricA,metricB,metricC,joinEui\ndevEui,contract,tags,metadata,state,registrationDate,activationDate,deactivationDate,lastHeardFrom,lastJoinTime,\nfirstJoinTime,yestBstns,yestPsr,yestAvgRssi,yestAvgSnr,lat,lng,profId,devType,devAddr,estLat,estLng,txPeriod,\ntxPower,curDr,adrChg,fwVer,serviceMetrics,metricA,metricB,metricC,joinEui\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\"> device_export.csv\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\"> device_export.csv\nDev EUI,Contract,Tags,State,Registration Date,Activation Date,Deactivation Date,Last Heard From\n123000000000ABC0,99,,ACTIVATED,03/31/2017 11:37:30 PM UTC,03/31/2017 11:37:30 PM UTC,,04/03/2018 01:54:02 PM UTC\n123000000000ABC1,99,,ACTIVATED,03/31/2017 11:25:49 PM UTC,03/31/2017 11:25:49 PM UTC,,04/03/2018 00:27:38 PM UTC\n123000000000ABC2,99,,ACTIVATED,03/31/2017 11:04:48 PM UTC,03/31/2017 11:04:48 PM UTC,,09/25/2019 09:38:10 AM UTC\nDev EUI,Contract,Tags,State,Registration Date,Activation Date,Deactivation Date,Last Heard From\n123000000000ABC0,99,,ACTIVATED,03/31/2017 11:37:30 PM UTC,03/31/2017 11:37:30 PM UTC,,04/03/2018 01:54:02 PM UTC\n123000000000ABC1,99,,ACTIVATED,03/31/2017 11:25:49 PM UTC,03/31/2017 11:25:49 PM UTC,,04/03/2018 00:27:38 PM UTC\n123000000000ABC2,99,,ACTIVATED,03/31/2017 11:04:48 PM UTC,03/31/2017 11:04:48 PM UTC,,09/25/2019 09:38:10 AM UTC\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/csvExport?appEui=AAAAAAAAAAAAAA01&contractId=2&fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom,serviceMetrics\"> service_metric_data.csv\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/csvExport?appEui=AAAAAAAAAAAAAA01&contractId=2&fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom,serviceMetrics\"> service_metric_data.csv\nDev EUI,Contract,Tags,State,Registration Date,Activation Date,Deactivation Date,Last Heard From,Metric A,Metric B,Metric C\n123000000000ABC0,2,\"Test,tag1,tag22\",ACTIVATED,03/31/2017 11:37:30 PM UTC,03/31/2017 11:37:30 PM UTC,09/03/2019 09:04:07 PM UTC,07/07/2020 02:39:46 PM UTC,80,100,100\nDev EUI,Contract,Tags,State,Registration Date,Activation Date,Deactivation Date,Last Heard From,Metric A,Metric B,Metric C\n123000000000ABC0,2,\"Test,tag1,tag22\",ACTIVATED,03/31/2017 11:37:30 PM UTC,03/31/2017 11:37:30 PM UTC,09/03/2019 09:04:07 PM UTC,07/07/2020 02:39:46 PM UTC,80,100,100\nDevice Transfer API\nDevices may be transferred between Accounts, specifically between Applications. Transfer between Applications belonging to the same Account is also supported.\nThe response to a successful Device Transfer request contains a job status URL which in turn can be used to check the progress of the transfer task.Task Status APIfor more information.\nAll Transfers are constrained by or require the following:\nOnly one task per Application may run at a time.\nAn API key with sufficient access for the source and as well as the destination Application. These API keys must be included in the HTTP Header as fields: Authorization (source) and Authorization2 (destination).\nThe destination Application must support the Join Server(s) associated with the Devices being transferred.\nThe destination Account must have access to identified Contract and Device Profile to be used by the transferred Devices.\nhttps://api.senetco.io/rest/integration/device/transfer\n\nPOST\n\n{\n \"data\":[\n {\n \"devEui\":\"123000000000ABC0\"},\n {\n \"devEui\":\"123000000000ABC1\"}\n ]}\n{\n \"data\":[\n {\n \"devEui\":\"123000000000ABC0\"},\n {\n \"devEui\":\"123000000000ABC1\"}\n ]}\ncurl -H\"authorization: <CUR_APP_API_KEY>\"-H\"authorization2: <NEW_APP_API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\"},{\"devEui\":\"0A00000012000002\"}]}' -XPOST\"https://api.senetco.io/rest/integration/device/transfer?fromAppEui=A1A1A1A1A1A1A1A1&toAppEui=A2A2A2A2A2A2A2A2&contractId=123456\"\ncurl -H\"authorization: <CUR_APP_API_KEY>\"-H\"authorization2: <NEW_APP_API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\"},{\"devEui\":\"0A00000012000002\"}]}' -XPOST\"https://api.senetco.io/rest/integration/device/transfer?fromAppEui=A1A1A1A1A1A1A1A1&toAppEui=A2A2A2A2A2A2A2A2&contractId=123456\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevTransferJobReq:A1A1A1A1A1A1A1A1-A2A2A2A2A2A2A2A2\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevTransferJobReq:A1A1A1A1A1A1A1A1-A2A2A2A2A2A2A2A2\"}\nTask Status API\nGet the status of an ongoing Device Registration, Activation or Deactivation task. The Task Status API is used to confirm the preceding operation completes prior to initiating a subsequent request. The status is available for 15 minutes after the task completes.\nhttps://api.senetco.io/rest/integration/device/status\n\nGET\n\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"\n{ \n \"state\":\"DONE_SUC\",\n \"result\":{ \n \"status\":\"Device activation on App EUI: AAAAAAAAAAAAAA01 completed. Activated: 0 Updated: 0 Not Changed: 0 Errors: 1\",\n \"msgs\":[\"DevEUI: 1230000000000ABC has not been registered. The Device cannot be Activated on JoinEUI: AAAAAAAAAAAAAA01.\"],\n \"stats\":{\n \"activated\":0,\n \"updated\":0,\n \"notChanged\":0,\n \"errors\":1}},\n \"pctDone\":100}\n{ \n \"state\":\"DONE_SUC\",\n \"result\":{ \n \"status\":\"Device activation on App EUI: AAAAAAAAAAAAAA01 completed. Activated: 0 Updated: 0 Not Changed: 0 Errors: 1\",\n \"msgs\":[\"DevEUI: 1230000000000ABC has not been registered. The Device cannot be Activated on JoinEUI: AAAAAAAAAAAAAA01.\"],\n \"stats\":{\n \"activated\":0,\n \"updated\":0,\n \"notChanged\":0,\n \"errors\":1}},\n \"pctDone\":100}\n200The task specified was successfully found. The latest status is returned.\n400The reqId parameter is missing or invalid.\n403The API key is not authorized to get the status of the task.\n404No task could be found with the requested reqId.\nCurrent status of the task expressed as a percentage (0 to 100).\nCurrent state of the task.\nSummary of the task after completion.\nMessages describing any errors that occurred while running the task.\nFUOTA API\nAllows users toinitiate-,cancel-, orcheck the status of a FUOTA tasktargeting a set of Devices associated to the same Application. Each of these actions has a distinct resource URL with corresponding parameters, detailed below.\nFUOTA Task Initiation\nhttps://api.senetco.io/rest/integration/mcastTransfer\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST-F\"file=@patch-to_new.bin\"\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=AAAAAAAAAAAAAA01&devEuis=123000000000ABC0,123000000000ABC1&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST-F\"file=@patch-to_new.bin\"\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=AAAAAAAAAAAAAA01&devEuis=123000000000ABC0,123000000000ABC1&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\"\n{ \n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"responseMsg\":\"MCastXferJobReq job starting in: 00:01:59\",\n \"statusCode\":200}\n{ \n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"responseMsg\":\"MCastXferJobReq job starting in: 00:01:59\",\n \"statusCode\":200}\n\nFUOTA Task Cancellation\nhttps://api.senetco.io/rest/integration/mcastCancel\n\nPOST\n\n*Conditionally required. Either a Job IDORa combination of an Application EUI and a list of Device EUIs or tags is required.\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcastCancel?jobId=MCastXferJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcastCancel?jobId=MCastXferJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcastCancel?appEui=AAAAAAAAAAAAAA01&devEuis=123000000000ABC0,123000000000ABC1\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcastCancel?appEui=AAAAAAAAAAAAAA01&devEuis=123000000000ABC0,123000000000ABC1\"\n{ \n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"responseMsg\":\"MCastXferJobReq job cancelled.\",\n \"statusCode\":200}\n{ \n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"responseMsg\":\"MCastXferJobReq job cancelled.\",\n \"statusCode\":200}\n\nFUOTA Task Status\nhttps://api.senetco.io/rest/integration/mcastStatus\n\nGET\n\n*Conditionally required. Either a Job IDORan Application EUI is required to get the status for a pending or running FUOTA job.\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcastStatus?jobId=MCastXferJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcastStatus?jobId=MCastXferJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcastStatus?appEui=AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcastStatus?appEui=AAAAAAAAAAAAAA01\"\n{\n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"serverId\":\"string\",\n \"state\":\"Running\",\n \"startTime\":0,\n \"endTime\":0,\n \"removeTime\":0,\n \"pctDone\":0,\n \"username\":\"string\",\n \"result\":\"string\",\n \"acctId\":0,\n \"operId\":0,\n \"jobLauncherClsNm\":\"string\"}\n{\n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"serverId\":\"string\",\n \"state\":\"Running\",\n \"startTime\":0,\n \"endTime\":0,\n \"removeTime\":0,\n \"pctDone\":0,\n \"username\":\"string\",\n \"result\":\"string\",\n \"acctId\":0,\n \"operId\":0,\n \"jobLauncherClsNm\":\"string\"}\nMulticast API\nAllows users tosetup-,modify-,check the status of-,send downlinks to-, andremovea Multicast Group targeting a set of Devices associated to the same Application. Each of these actions has a distinct resource URL with corresponding parameters, detailed below.\nMulticast Group Setup\nhttps://api.senetco.io/rest/integration/mcast/setup\n\nPOST\n\n*Conditionally required. Either a list of Device EUIsORa list of Device tags is required.\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=C&txChnl=7&txDr=13&type=D2D\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=C&txChnl=7&txDr=13&type=D2D\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initializing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initializing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initializing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initializing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n\nAdd Devices To Existing Multicast Group\nhttps://api.senetco.io/rest/integration/mcast/addDevices\n\nPOST\n\n*Conditionally required. Either a list of Device EUIsORa list of Device tags is required.\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE02\",\n \"groupId\":1,\n \"state\":\"Initializing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE03\",\n \"groupId\":2,\n \"state\":\"Initializing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE02\",\n \"groupId\":1,\n \"state\":\"Initializing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE03\",\n \"groupId\":2,\n \"state\":\"Initializing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n\nRemove Devices From Existing Multicast Group\nhttps://api.senetco.io/rest/integration/mcast/removeDevices\n\nPOST\n\n*Conditionally required. Either a list of Device EUIsORa list of Device tags is required.\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE02\",\n \"groupId\":1,\n \"state\":\"Closing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE03\",\n \"groupId\":2,\n \"state\":\"Closing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE02\",\n \"groupId\":1,\n \"state\":\"Closing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE03\",\n \"groupId\":2,\n \"state\":\"Closing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n\nMulticast Group Status\nhttps://api.senetco.io/rest/integration/mcast/status\n\nGET\n\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\"\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Failed\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Failed\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n\nSend Downlink To Multicast Group\nhttps://api.senetco.io/rest/integration/mcast/sendmsg\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n\nMulticast Group Removal\nhttps://api.senetco.io/rest/integration/mcast/delete\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Closing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Closing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Closing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Closing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
73 },
74 {
75 "platform": "Senet",
76 "type": "docs",
77 "source": "https://docs.senetco.io/dev/streaming/Yodiwo/",
78 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nYodiwo\nPlatform Setup\nNotifier Setup\nYodiwo\nYodiwo Cyan (https://cyan.yodiwo.com) offers a graph based IoT application development and deployment environment, which allows dispersed network devices of diverse technologies to be seamlessly connected with analytics, storage system, mobile and web application.\nPlatform Setup\nLog into your Yodiwo Cyan account and click the Devices Manager navigation item in the navigation bar. Then click the My API Keys tab and then the plus button next to the Create API key selection box.\n\nSpecify a friendly name to identify your API key. Make sure the API Key Type selection is set toRest.Press the submit button to create the API Key.\n\nUse the copy button to copy your api key to the clipboard. You will need this api key later when setting up your notifier.\n\nExactly how you want to handle the forwarded data will be specific to your implementation.Here is an example graph that shows how to take the data from the Network Server (Rest In) and then pass the Request Body to a JSON Deserializer to pull out the JSON fields that you are interested in. For simplicity, this example shows the devEui, txtime, value1 and value2 JSON fields get passed to a String Builder which builds a string to be passed/printed to the Message Console, but you could choose a different designer widget to perform a custom task, like push the JSON data to a Database or graph the data or forward the data to another service.\nNOTE:Make sure to save and deploy your graph each time you make changes to it.\n\nHere you can see the successful output of our example graph that prints the concatenated string to the Web Console.\n\nNotifier Setup\nUse the API Key you grabbed earlier and enter it into the provided API KeyNotification Targetfield.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
79 },
80 {
81 "platform": "Senet",
82 "type": "docs",
83 "source": "https://docs.senetco.io/ap/appMgmt/",
84 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplications View\nApplication Editing\nApplication Feature and Port Configuration\nAuthentication Token Management\nApplications View\nThe Applications View provides a list of all defined Customer Applications, with controls for provisioning and modification.\n\nThe view can be customized by pinning statistics cards for up to three separate apps, as well as changing the columns shown in the table.\n\nJoin success and error statistics are also included in the table to assist in troubleshooting potential Application Device issues. These are hidden by default, but can be set to visible in the table settings dialog.\n\nApplication Editing\nSelect Application settings may be changed as needed. Simply open the Application Edit dialog, make the desired changes and click Save to update the Application. Three vertical tabs on the dialog's left side provide access the Application's general Settings, Join Server configuration, and its Alert Settings.\nGeneral Settings\nThe Application's General Settings are located on the Edit dialog's first tab.\n\nField Descriptions\nJoin Server Configuration\nOn the Edit dialog's second tab:\nThe 'Default UI Join Server' setting controls the default Join Server selection when entering theApplication's Device Managementview.\nPublicand PrivateJoin Servers may be added or removed from the Application's configuration.\nNote\nAt least one Join Server must be associated to the Application.\nChanging Join Server association(s) may disrupt communication for all or a portion of the Application's Devices and should only be performed with full understanding of potential impact.\n\nClick the plusbutton to the right of the section label to show available Join Servers. The list may be filtered by entering text in the 'Find a Join Server' field above the list, and the visibility of Public Join Servers toggled using the control to its right. Check or uncheck one or more Join Servers to associate or disassociate them with the Application.\n\nAlert Configuration\nAlert settings are presented in the third tab of the dialog. The 'Alerts Enabled' selection determines the availability of the remaining threshold controls located below. Note the setting for 'Period Before Registration 2FA Token Expiration Alerts (Days)' will remain enabled as its assessment and activity is independent of the Application's other thresholds.\n\nAlert Settings\nNote\nAlert thresholds are compared against the most recent values of their corresponding notification statistics, which are calculated every 15 minutes.\nApplication Feature and Port Configuration\nMulticast and FUOTA can be enabled or disabled for an Application in the Feature and Port Protocol Configuration tab. Additionally port and protocol version can be set for each of the 5 supported protocols. These settings are hidden by default, but are displayed by clicking on the Advanced toggle button.\n\nAuthentication Token Management\nFrom the Applications table, select a row and click thebutton to edit an Application's Two Factor Authentication Token settings. The edit dialog shows the status information for the most recently issued token and allows changing settings for future tokens.\n\nThese can also be edited from the Application details view.\n\nField Descriptions\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
85 },
86 {
87 "platform": "Senet",
88 "type": "docs",
89 "source": "https://docs.senetco.io/rp/coveragePoints/",
90 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nCoverage Test Points\nCoverage Test Points\nThe Coverage Test Points layers displays data generated by Senet's Test Mote devices.\n\nClick the layers button and selectCoverage Test Points\n\nTo filter the Coverage test points to a specific Limit (number of displayed points), Tx Power, or Base Station click the layers button again and selectFilter coverage Test Points\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
91 },
92 {
93 "platform": "Senet",
94 "type": "docs",
95 "source": "https://docs.senetco.io/dev/streaming/AWS/",
96 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nAWS API Gateway\nPlatform Setup\nNotifier Setup\nAWS API Gateway\nThe AWS API Gateway (http://aws.amazon.com) provides a means to forward event data to AWS services in the cloud for additional processing. Lambda is an amazon service that allows a user to run code on an amazon cluster without needing to set one up.\nPlatform Setup\nLog into your amazon account and click the services navigation item in the navigation bar. Then click the lambda option under the compute section.\n\nOnce you have entered the lambda section of AWS click the Create a Lambda function button.\n\nThen select the blueprint you wish to use. A blueprint is basically a pre-made lambda function that you can use.\nClick on the \"Blank Function\" tile.\n\nConfigure the lambda trigger, this is the method that activates the lambda function. In our case, we support the AWS API gateway.\nNow you can configure your function, this part will be based on your implementation.\nOnce your function is configured, you can review all your changes. Review the configuration and confirm it is correct, hit the create function button at the bottom of the review page. Next you need to configure the API Gateway to use API keys instead AWS IAM. Click on the ANY link (you will need the URL under 'API Gateway' later).\nFrom here click the Method Request link.\nConfigure the gateway with the following settings (Authorization NONE and API Key Required).\nReturn to the previous page and then click Integration request.\nThere, simply disable Lambda proxy integration.\n\nNext you need to make the Usage Plan for the API Gateway.\nNow click the Add API Stage Button. After you create it, hit the Next button.\n\nNow hit the 'Create API Key and add to Usage Plan' button. This will launch a dialog that allows you to create an API Key for this usage plan.\n\nDeploy your changes to the API Gateway. Navigate back to the API Gateway.\nUsing the actions menu, hit deploy API.\n\nSelect the correct deployment stage from the dropdown in the resulting dialog and then hit deploy.\nNotifier Setup\nSpecify the Server Name, Function Name, and API Key into the providedNotification Targetfields.\nThe URL you grabbed earlier will look like this:\nhttps://example.execute-api.region.amazonaws.com/prod/ExampleName\nhttps://example.execute-api.region.amazonaws.com/prod/ExampleName\nCopy the following segment of the URL into the Server Name field:\nexample.execute-api.region.amazonaws.com\nexample.execute-api.region.amazonaws.com\nthen copy the remaining segment of the URL (including the staging area name), shown here, into the Function Name field.\n/prod/ExampleName\n/prod/ExampleName\nThe token is an optional field that is passed through to the AWS API Gateway as a token field. This field is to help give the AWS Lambda function some user defined information.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
97 },
98 {
99 "platform": "Senet",
100 "type": "docs",
101 "source": "https://docs.senetco.io/ap/#application-provider-documentation",
102 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
103 },
104 {
105 "platform": "Senet",
106 "type": "docs",
107 "source": "https://docs.senetco.io/dev/streaming/Losant/",
108 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nLosant\nLosant Application Templates\nPlatform Setup\nNotifier Setup in the Senet Portal\nGetting Started with Losant\nLosant\nLosantis an Enterprise IoT platform that provides a cloud software foundation to build and scale compelling IoT Applications. Losant has a unique, low-code approach to Application development and provides a toolset for developing dashboards to visualize data in multiple ways.\nMessages sent from the Senet platform will be forwarded inJSONformat (SeeDefault Data Fields). Losant supports HTTP-type connections calledWebhooks.\nLosant Application Templates\nA variety of preconfiguredApplication Templatesare available from a number of different entities. Senet has collaborated with Losant to provide an Application Template that delivers visualization and alerting for aMilesight AM107 Ambience Monitorwhich can be foundhere.\nPlatform Setup\nTo start taking advantage of Losant, a user of the platform will need to create at least one of each of the following:\nApplicationNew ApplicationSenet Application Template\nNew ApplicationSenet Application Template\nSenet Application Template\nWebhook\nWorkflow\nAnd optionally:\nDevice Recipe\nCustom Node\nDashboardNew Dashboard\nNew Dashboard\nNote\nThe Senet Application Template includes a Device Recipe, Custom Node, and Dashboard for the Milesight AM107.\n\nLosant Platform Setup Steps\nNavigate to the Losant platform\nCreate a new Application, either from a template or a new blank Application.\nNavigate to the Webhook page and create a new Webhook. You can optionally choose to require basic authentication for requests against this Webhook.\n\nAfter you've created the Webhook, note the Webhook URL displayed in the Webhook table.\n\nNotifier Setup in the Senet Portal\nReturn to the Senet Portal\nExpand the Device settings menu in the top right corner of the Device tile (top arrow)\nOpen the Edit Device menu by clicking the gear icon (middle arrow)\nEdit the target Device's Notification Target\nVerify the Notification Target is enabled\nChooseLosantfrom the drop down menu (bottom arrow)\nLosant\n\nSpecify the Losant Webhook URL as the Notification Target Webhook URL in the Senet Portal.\n\nFor Webhooks configured with optional basic authentication:\nIn the example below a username ofexUserand a password ofexPassare used\nexUser\nexPass\nConvert the username and password to Base64 encoding using the providedEncode Username:Passwordlink\nEncode Username:Password\nEnter the username and password then pressOkto fill in the Authorization string\nOk\n\nGetting Started with Losant\nCreating a Workflow\nReturn to the Losant platform\nNavigate to the Workflow page\nIf the workflow does not already exist or the Senet template will not be utilized, create a new Application-type Workflow using the Add Workflow button\n\nEnter the Workflow editor by clicking on the Workflow from the list of created workflows. In the example below theSenet Developer - Milesight AM107template workflow will be shown\nOnce in the Workflow editor, add a Webhook-type node to the Workflow if one does not already exist. The Webhook node will act as the ingress into Losant\nNote\nTheSenet Developer - Milesight AM107template workflow includes a Webhook node titled AM107 Webhook\n\nClick on the Webhook node to edit it. Select the corresponding Webhook (from section Losant Platform Setup Steps) under the Webhook Name dropdown menu\n\nContinue exploring the Losant platform by watching Losant solutions architect Kevin Niemiller and Senet's CTO and COO, Dave Kjendal, walk through the Senet Application Template in a Deeper Dive Webinar replay:\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
109 },
110 {
111 "platform": "Senet",
112 "type": "docs",
113 "source": "https://docs.senetco.io/ap/planningmap/",
114 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nPlanning Maps\nCreating Planning Maps\nPlanning Map Fields\nExporting Planning Maps\nPlanning Map Marker Images\nManaging Planning Maps\nCoverage Tool\nCoverage Layer\nSenet LVN Coverage and Helium Hotspot Layers\nPath Quality\nPlanning Maps\nPlanning Maps are user defined views that allow positioning custom content within a map.\n\nReset the map center and zoom\nRefresh the contents of the map\nCoverage:Show the map Coverage tool\nMap Planning:Create, open or manage maps\nCreating Planning Maps\n1. To create a map, select Create Planning Map from the Map Option button menu. This action will open a create planning maps form.\n\n2. Enter a map name.\n\nNote\nSelectingopens a dialog that displays the valid columns for the planning map. A planning map consists of multiple columns of data including latitude and longitude location information in the decimal degrees format, ex. 42.8334, -106.35946.\nThe minimum required columns for end points are latitude and longitude only. Planning maps are saved in CSV file format.\n\n\nNote\nBy selecting the “Calculate Path Quality” entry, a path quality analysis with be performed for each endpoint location based on the projected viewshed of Base Stations in the area. Base Stations and proposed Base Stations in the imported file contribute to the path quality calculation. ThePath Quality Settingsfor the calculation can be configured here. Also,Application Providers can view Planning Maps that contain Base Stations, but cannot add them.\n\n\n3. Selectingwill open the local computer file explorer to select the desired planning map that has previously been created. For this example, the file “Customer_Location_mapversion” was selected. Click the “Import” button to import the planning map into the mapping tool.\n4. Selecting “Show Map” results in the mapped objects being displayed on the planning map location. This encompasses all the end point pin locations in the respective view.\n\n\nPlanning Map Fields\nNote\nApplication Providers can view Planning Maps that contain Base Station type objects, but cannot add them.\nExporting Planning Maps\nPlanning Maps can be exported through the Planning Maps table. Simply select on a row by selecting on the name field. Then click the exportbutton. This exports a map in the same format that it was imported so that it can be shared or re-imported. As part of the export, the best 3 Base Stations that contributed to the last Planning Map path quality calculation are included for each entry. This provides the path quality, distance, height, and Azimuth that was measured for that Base Station when compared to that map entry.\nPlanning Map Marker Images\nManaging Planning Maps\nSelecting “Manage Planning Maps” displays the planning maps summary table below.\n\n\nThe map provides the ability to quickly measure the distance between two points on the map. Click thebutton and then select \"Measure Distance\" from the menu to enable the feature.\n\nThen select two points on the map and see the distance in miles between them. This disables all other clickable elements so that any two points can be selected without triggering other map features. Clicking close will remove the two markers, the line, and the distance dialog.\n\nCoverage Tool\nThe Coverage Tool button launches a dialog that contains a search field for entering addresses or locations.\n\nOnce the search information is submitted by pressing the enter key or clicking theicon, the map shows a pin for the location and the estimated path quality to nearby Base Stations (See Path Quality below). The green areas on the map reflect areas of high quality radio reception.\nRight-clicking on an empty area of the map provides a short cut for checking coverage. This creates a pin at the clicked location and opens the Location Information dialog. Selecting the Path Quality tab shows the estimated path quality to nearby Base Stations (See Path Quality below).\nCoverage Layer\nThe Coverage Layer is designed to display predicted network coverage of Base Stations within a given area. The layer is comprised of all viewsheds corresponding to the Base Stations within the Map's viewport, and presented as green image overlays.\nThis layer is only enabled at zoom level 9 and higher and may require zooming in to view coverage, as dynamically indicated by the Map Layers icon:\n- Available\n- Unavailable\nOnce available, activate the Coverage Layer by first clicking the 'Map Layers' button, and then checking the 'Coverage' option.\n\nWhen changes in either the location focus of the Map viewport or the zoom level are detected, a refresh is required to update the Coverage Layer's presentation, as indicated by a yellow emphasis outline and motion (not shown) of the 'Refresh Map' button:\nThe 'Set Coverage Settings' menu shown above can be used to scope the Viewsheds included in the Coverage Layer to a specific Base Station Classification.\n\nThe Coverage Layer's opacity can be adjusted via the 'Set Overlay Opacity' option from the menu shown above.\nSenet LVN Coverage and Helium Hotspot Layers\nTwo additional coverage layers are also available to visualize broader regional coverage, the Senet LVN Coverage layer and the Helium Hotpots layer.\nSenet LVN Coverage Layer\nThe Senet LVN Coverage layer shows the aggregate coverage provided by all Base Stations participating in the Senet LVN. Covered areas are presented as green hexagons based on Path Quality colored according to the following table:\n\nHelium Hotspots Layer\nThe Helium Hotspots layer shows the location of known Helium Hotspots on the Map as purple hexagons. Each hexagon may include one or more Helium Hotspots within the displayed region. Path Quality calculations have the option to include Helium Extended coverage for determining whether an area is covered by the Helium Network.\n\nPath Quality\nThe path quality dialog shown in the lower left of the map, shows detailed information about the distance between the search location and the Base Station and reception quality expressed as a percentage. This percentage reflects the Fresnel clearance (line of site) between two points. This calculation uses an elevation database to determine how obstructions interfere with the line of site. Note: The zoom level of the map can be adjusted after the search to view the results with a different perspective. This may be required to see in-range Base Stations that are outside of the initial result view.\nThe pin plot for the selected location will also display a vector to each Base Station indicating the direction of coverage.\nThe following are different examples of line of sight path quality calculations:\nAnd this is how the path quality results are displayed in the map:\nPath Quality Settings\nSenet provides the ability to configure how path quality is calculated by allowing override of key inputs as well as control over which type of Base Station it is calculated for. Inputs overrides include Base Station height (feet) and radius (miles) , Device height (feet) and whether or not to include Helium Extended coverage. The Classification filter constrains which types of Base Stations the calculation is performed for. Customized settings are persisted across calculations to ensure a consistent planning experience.\n\nMultiple Classifications\n\nInclude Helium Coverage\n\nPath Quality Results\n\nNote\nPath Quality will include a count of the nearby Helium hotspots within range of the target location. Hotspot name, distance, and azimuth information are not included, because this is an aggregate count and not attributed to just one hotspot.\nPath Quality Marker Colors\nPath Quality Markers are generated for Planning Map entries that do not have a pre-defined marker. The markers are generated if the Calculate Path Quality check-box is selected during map creation or initiating a path quality calculation from the table.\nIf Helium hotspots are included in the Path Quality calculations, the generated markers include a purple dot as shown here:\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
115 },
116 {
117 "platform": "Senet",
118 "type": "docs",
119 "source": "https://docs.senetco.io/ap/#device-profiles",
120 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
121 },
122 {
123 "platform": "Senet",
124 "type": "docs",
125 "source": "https://docs.senetco.io/dev/#delete-gateway",
126 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nDeveloper Documentation\nDashboard\nDevice Details\nEdit Device\nGateway Details\nEdit Gateway\nDelete Gateway\nDeveloper Documentation\nIoT development for the Senet Network\n\nJoin the Community\nUse theSenet Communityto ask question, read articles, talk to Senet employees and other Portal users.\nDashboard\nThe Dashboard is the main view of the Portal. Users can connect their Devices and Gateways to the Senet Network through a simple registration process. The Dashboard displays high level statistics and RF data to help users monitor their equipment.\nCustomize the Dashboard\nClick on the gearin the top-right corner.\nOptions are displayed to choose a view and toggle Dashboard features.\n\nNote\nWhen the Tile View is selected, theTile Sortingoptions are displayed at the bottom of the Dashboard Settings. When the Table View is selected, rows can be sorted by clicking on the column headers.\nTile View\nChoose theTile Viewin theDashboard Settingsto display each Devices or Gateways in a tile. The tiles show network and configuration data along with a graph to display transaction and RF statistics.\n\nClick on the plus iconabove the tiles to open the registration window shown below.\n\nClick on the Device image to register a Device or the Gateway image to register a Gateway. See theDevice Registrationdocumentation orGateway Registrationdocumentation for step-by-step instructions.\nClick on the menu buttonin the top right corner of the tile. Click on the delete buttonto remove the Device or Gateway. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\n\nTable View\nChoose theTable Viewin theDashboard Settingsto display the Devices and Gateways in separate tables.\n\nClick on the register buttonabove the Device or Gateway table to open the respective registration window. See theDevice Registrationdocumentation or theGateway Registrationdocumentation for step-by-step instructions.\nClick on a row to select a Device or Gateway. Click on the delete buttonto remove the selected item. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\nThere are two options provided for deleting a Device:\nDelete the Device from the Network.\nDelete the Device from the Account only.\nDeleting the Device from the Network removes the Device from the NMS completely. It will not be able to communicate on the Senet Network following the deletion.\nDeleting the Device from the Account leaves the Device in an active state on the Network, but removes it from display in the Developer view. Deleting a Device from an Account also removes any Device specific Notification Targets. Data from the Device will not be forwarded until it is associated with a new Account and Notification Target.\n\nNetwork Delete\n\nAccount Delete\n\nDevice Details\nClick on a Device EUI or Device image in the dashboard to open theDevice Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above allows users to edit their Device, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open theEdit Devicewindow\nSend Downlink\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\nEdit Device\nEdit the Device description, type and notes in the DETAILS tab.\n\nEdit the Device latitude and longitude in the LOCATION tab.\n\nEdit theNotification Targetin the NOTIFICATION TARGET tab.\n\nSelect LoRaWAN Device settings can be overriden in the DEVICE PROFILE tab. These configure the behavior of the Device on the network and do not normally need to be changed. Accordingly, this tab is not visible by default. Check the Device Profile checkbox on the DETAILS tab to display this tab.\n\nThe following table contains the list of LoRaWAN settings that can be set in this tab:\nGateway Details\nClick on a Gateway EUI or Gateway image in the Dashboard to open theGateway Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above displays information and statistics about the Gateway. Click on thebutton to minimize.\nEdit Gateway\nEdit the Gateway installation information.\n\nDelete Gateway\nClick thebutton in the table view or thebutton in the tile view to remove the Gateway. A dialog is shown to confirm the delete request. The dialog includes a checkbox to indicate that the Gateway should also be permanently removed from the network. If the box is not checked, only the user's association to the Gateway is removed.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
127 },
128 {
129 "platform": "Senet",
130 "type": "docs",
131 "source": "https://docs.senetco.io/rp/gw/supportedSenetPF",
132 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nSenet Packet Forwarder\nSenet Packet Forwarder Supported Gateways\nSenet Packet Forwarder - Gateway Communication Ports\nSenet Packet Forwarder\nSenet’s Packet forwarder provides secure, reliable end-to-end device communication with fully remote management and monitoring supported by the Network Server. Senet currently offer two types of installs:\nDeveloperFirewall friendly and secure backhaul communication, this option is used by customers in the test phase or for a lab environment. The Senet Packet Forwarder offers a more robust suite of management tools as well as reliable and secure data delivery communications.\nDeveloper\nFirewall friendly and secure backhaul communication, this option is used by customers in the test phase or for a lab environment. The Senet Packet Forwarder offers a more robust suite of management tools as well as reliable and secure data delivery communications.\nRAN ProviderAppropriate for Radio Access Network (RAN) Providers deploying Gateways at scale, this option increases security over the standard Senet Packet forwarder by restricting local user accounts and preventing remote access.\nRAN Provider\nAppropriate for Radio Access Network (RAN) Providers deploying Gateways at scale, this option increases security over the standard Senet Packet forwarder by restricting local user accounts and preventing remote access.\nNote\nBase Station registration and Software installation is only required for devices that are new to the Senet Network. If Senet provided the Gateway, no further action is necessary.\nSenet Packet Forwarder Supported Gateways\nSenet Packet Forwarder - Gateway Communication Ports\nBelow is a table of ports used by the Base Station to communicate with the Senet Network. The included domain and port information can be used for whitelisting these communications on a network.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
133 },
134 {
135 "platform": "Senet",
136 "type": "docs",
137 "source": "https://docs.senetco.io/ap/#device_details",
138 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
139 },
140 {
141 "platform": "Senet",
142 "type": "docs",
143 "source": "https://docs.senetco.io/ap/adminUsers/",
144 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nUsers\nAccount Types\nTwo Factor Authentication\nUpgrading Developer Users\nUsers\nEvery user is assigned an appropriate account type based on their role. Roles determine the features that are accessible to a user and controls whether the user can modify data.\nUser accounts can be created, edited, deleted and exported to a CSV file from the Users view under Administration. New accounts created from the login page are assigned the Developer role by default, but can be upgraded to accommodate other roles as needed.\nCreate UserAdd a new user account\nEdit User:Edit an existing user's account\nDelete User:Delete a user account\nRefresh:Manually update the user data in the table\nSettings:Select table columns to hide or show\nExport to Excel:Export the table data to an Excel spreadsheet\nUpgrade Developer User:Upgrade a Developer user account to an Application Provider account.\n\nFilter controls are provided to show only those users with specific roles.\n\nAccount Types\nThe account type determines the feature set and data accessible to the user.\nApplication Provider Admin\nApplication Provider Admins are responsible for administration of the Application Provider Portal and its users.\nApplication Provider\nApplication Providers are customers of an Operator that pay for service and manage one or more Applications.\nApplication Provider - Read Only\nRead Only Application Providers have access to the same views as an Application Provider, but are not allowed to make any changes.\nApplication Provider - Contract ViewThe Application Provider - Contract View role is defined to create a Contract centric presentation of the Application Provider data. Portal views are only visible to this role if the data in the view can be filtered by a Contract ID.\nThe following table shows all views that are visible to a user with the Application Provider - Read Only role and whether that view is included for a user with the Application Provider - Contract view role:\nTwo Factor Authentication\nAdministrators can enable two-factor authentication for end users.\nClick the two-factor authentication in the Edit User dialog.\nClick the two-factor authentication in the Edit User dialog.\n\nMake sure the user's information includes a valid phone number before saving.\nMake sure the user's information includes a valid phone number before saving.\n\nWhen the user logs into the Portal, they will be sent an authentication code to the registered phone number.\nWhen the user logs into the Portal, they will be sent an authentication code to the registered phone number.\n\nThat authentication code is entered to complete the login.\nThat authentication code is entered to complete the login.\n\nUpgrading Developer Users\nAdministrators have the ability to upgrade Developer users to have access to their Applications. An Administrator enters the username of the Developer in the Upgrade Developer User dialog to grant access. If both users are Administrators, then each has the ability to select the roles to assign (both are assigned by default).\nIn order to protect Developer users from being taken control of by competing customers, an email domain field is configured by the platform provider for the Application Provider account. Only Developers who have an email address with the same domain as the configured email domain can be upgraded. Additionally, Developer users cannot be upgraded if they have already been upgraded by the Application Provider, the platform operator, or another customer.\n\nUsers that possess both Application Provider - Admin and RAN Provider - Admin roles can choose which roles to grant to a Developer during an upgrade.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
145 },
146 {
147 "platform": "Senet",
148 "type": "docs",
149 "source": "https://docs.senetco.io/dev/stream/",
150 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nAPI Reference\nOverview\nNotification Targets\nSupported Notification Targets\nUplink API\nDownlink API\nDownlink API - Multicast\nDownlink API - Clear Downlinks\nAPI Reference\nSenet offers a variety of methods to stream device messages transmitted over the Senet Network.\nOverview\nUplink Messages\nDevices transmit anuplink messageto one or more gateways that relays the message to the network server. The network server forwards the message to an IoT platform.\n\nDownlink Messages\nIoT platforms make calls to the network server. The network server sends eachdownlink messageto a single gateway that transmits the message to a single device.\n\nNotification Targets\nData streaming is setup by creating aNotification Targetfor a devices. TheNotification Targetconfigures the network server to stream device uplinks to a user specified destination or 3rd party IoT platform. In other words, uplink messages are forwarded as they are received by the Senet Network.\nConfigure a Notification Target:\nOpen theEdit Devicewindow.Table View: Select a row in the device table. Click on the edit button.Tile View: Click on the menu button. Click on the edit button.Device Details: Click on the edit button.\nOpen theEdit Devicewindow.\nTable View: Select a row in the device table. Click on the edit button.\nTable View: Select a row in the device table. Click on the edit button.\nTile View: Click on the menu button. Click on the edit button.\nTile View: Click on the menu button. Click on the edit button.\nDevice Details: Click on the edit button.\nDevice Details: Click on the edit button.\n\nClick on the NOTIFICATION TARGET tab.\nClick on the NOTIFICATION TARGET tab.\nIn theForward Todropdown menu, choose a Notification Target type to display the required fields and options.\nIn theForward Todropdown menu, choose a Notification Target type to display the required fields and options.\nComplete the required fields and click Save.\nComplete the required fields and click Save.\nNote\nA firewall rule may need to be added to allow incoming uplink messages from the Senet Network.\nSenet Source IP Addresses: 34.197.99.138 and 52.88.64.191\nSupported Notification Targets\nThe Senet Network supports a variety of options to forward messages as they are received by the network. Options may be to forward messages to a private socket listener or a public subscription based analytics solution. By Default, only the packet with the best Signal to Noise Ratio (SNR) will be forwarded. To receive packets received by multiple gateways (Duplicate Packets) enable “Include Duplicate Uplinks” when setting up the notification target.\nFor a list of the supported notifications targets and configurations use the drop-down API menu above.\nConsecutive Errors\nNotification Targets that produce 10 consecutive errors when forwarding data will be disabled by the network server. This is to prevent excessive load on the target and on the network server. A short outage in network connectivity should not trigger the 10 consecutive error limit on most devices. However, if your device has a very short transmit interval, it may be possible to reach the 10 consecutive error limit in a very short period of time. If your Notification Target is disabled by the network server, review the Last Error message field in the device details. This error message will help you understand why the notifications are failing. If you believe the errors were caused by an interruption in service that has now been corrected, you can re-enable the Notification Target to restore message forwarding. If the error condition persists, the Notification Target will again be disabled when the error limit is reached.\nUplink API\nThe Senet Network receives payload data from devices via one or more gateways that receive the transmission. In addition to streaming the payload data (pdu), network information is also included. The data is formatted usingJSONand contains the following default fields. Optional RF fields can also be added by enabling \"Include RF Data\" in the notification target.\nThe Senet Network supports the standardJSONobject model where each object contains one-to-many key/values pairs. TheJSONobject is in the following format:\nNote\nSenet may add additional fields during future Portal updates. Please ensure that your Application will ignore any unknown fields and continue to parse the notification data.\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\nFields\n* Requires contractual agreement in Production\nExample with Payload Fields:\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\n\nExample with RF Fields:\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":4,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"snr\":10,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":4,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"snr\":10,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\n\nDownlink API\nSenet provides a simple API for sending downlinks to devices on the Senet Network using HTTP POST. The Downlink API can be leveraged by a Notifier endpoint where in response to receiving uplinks, downlinks are automatically submitted to the downlink queue. All API requests require an authorization key passed either as a parameter or in an authorization header of a Curl command. Senet API keys are 44-character alpha-numeric strings with a prefix of either “AK2:” or “AK3:”.\nImplementing the Downlink API\nThe Senet Downlink API is available to all Portal users. It is implemented as a standard parameterized URL.\nClick on the usernamein the top-right corner.\nClick on the usernamein the top-right corner.\nFrom the dropdown menu, selectEdit Account Info.\nFrom the dropdown menu, selectEdit Account Info.\n\nClick on the Generate API Key buttonon the right side underDeveloper API Keyto generate and display a new API Key.\nClick on the Generate API Key buttonon the right side underDeveloper API Keyto generate and display a new API Key.\n\nCopy the key, storing it securely and safely: this key uniquely identifies the user's account to the Portal. All incoming API calls must be validated with this key in conjunction with registered devices and gateways.\nCopy the key, storing it securely and safely: this key uniquely identifies the user's account to the Portal. All incoming API calls must be validated with this key in conjunction with registered devices and gateways.\nUsing the API Key and parameterized URL described below, downlinks can now be sent to the user's devices with the Downlink API. In the examples below, the \"<API_KEY>\" value should be replaced with the generated key.\nUsing the API Key and parameterized URL described below, downlinks can now be sent to the user's devices with the Downlink API. In the examples below, the \"<API_KEY>\" value should be replaced with the generated key.\nResource URL\nhttps://portal.senetco.io/rest/current/device/sendmsg\nHTTP Method\nPOST\nParameters\nResponse\nCurl Example:\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmsg?eui=FFFFFFFFFFFFFFFF&pdu=0102&confirmed=true&port=88&timeoutMinutes=2\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmsg?eui=FFFFFFFFFFFFFFFF&pdu=0102&confirmed=true&port=88&timeoutMinutes=2\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Multicast\nSend multicast downlink messages to a multicast session allowing a user specified list of gateways to transmit on.\nResource URL\nhttps://portal.senetco.io/rest/current/device/sendmcastmsg\nHTTP Method\nPOST\nParameters\nResponse\nCurl Example\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Clear Downlinks\nClears queued downlink messages. If a specific message ID is supplied, only that downlink will be cleared, otherwise all queued messages are cleared.\nResource URL\nhttps://portal.senetco.io/rest/current/device/clearmsgs\nHTTP Method\nPOST\nParameters\nResponse\nCurl Example\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\n{\"clearedIds\":[00001]}\n}\n{\"clearedIds\":[00001]}\n}\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
151 },
152 {
153 "platform": "Senet",
154 "type": "docs",
155 "source": "https://docs.senetco.io/dev/streaming/Qubitro/",
156 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nQubitro\nPlatform Setup\nNotifier Setup in the Senet Portal\nQubitro\nQubitrocollects Device data from multiple networks and provides a complete toolkit to activate it in customer Applications.\nMessages sent from the Senet platform will be forwarded inJSONformat (SeeDefault Data Fields).\nPlatform Setup\nSign up and login to theQubitro Portal\nCreate aNew Projector select an existing project from theProjectslist\nNew Project\nProjects\nOnce in the Project, add a source using theNew sourcebutton\nNew source\n\nSelectSenetas the Connectivity source\nSenet\n\nNote theProject IDandWebhook signing keyin the Connectivity source instructions\nProject ID\nWebhook signing key\n\nNotifier Setup in the Senet Portal\nReturn to the Senet Portal\nExpand the Device settings menu in the top right corner of the Device tile (top arrow)\nOpen the Edit Device menu by clicking the gear icon (middle arrow)\nEdit the target Device's Notification Target\nVerify the Notification Target is enabled\nChooseQubitrofrom the drop down menu (bottom arrow)\nQubitro\n\nEnter theProject IDin the Senet Portal.\nProject ID\nSpecify theWebhook signing keyas theWebhook Signing Keyin the Senet Portal.\nWebhook signing key\nWebhook Signing Key\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
157 },
158 {
159 "platform": "Senet",
160 "type": "docs",
161 "source": "https://docs.senetco.io/ap/adminApiKeys/",
162 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nAPI Key Management\nApplication API Keys\nCustomer API Keys\nDeleting an API Key\nAPI Key Management\nSenet's integration APIs are secured through the use of API keys. Administrative users can generate new keys to provide targeted access to specific features, as well as delete existing keys using the 'API Keys' view, found under 'Administration'.\n\nThere are 2 main types of API keys: Application and Customer. Click thebutton to create a new key.\n\nApplication API Keys\nApplication API Keys may be used for a wide variety of activities, including:\nOnboarding * (e.g. Device Registration, Activation, De-Activation)\nApplication Downlinks\nDevice information Updates\nDevice Firmware Updates\nExporting Device Information\nNote\nOnboarding devices is a critical workflow primarily completed by Application Providers. Details can be found in the App-Provider documentationhere.\nApplication Access Roles\nTo better secure Network access and configuration, Roles scope access to specific Device APIs. These include:\n|Device: Read Access|/integration/device/csvExport|\nCustomer API Keys\nCustomer API Keys provide access to customer billing and contract data.\nCustomer Access Role\nThe following Customer Role scopes access to the billing and usage APIs. These include:\nDeleting an API Key\nAPI Keys cannot be edited: only created or deleted. To delete, select the targeted key's row from the table and press thebutton. A dialog will appear.\nWhen deleting an Application API Key, enter the key's corresponding Application EUI to confirm deletion.\n\nWhen deleting a Customer API Key, enter the key's corresponding Customer ID to confirm deletion.\n\nNote\nIf the selected key was used within the past 3 days, the dialog will require an additional confirmation.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
163 },
164 {
165 "platform": "Senet",
166 "type": "docs",
167 "source": "https://docs.senetco.io/dev/gw/Registration/",
168 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nGateway Registration\nGateway Communication Ports in Use\nGateway Registration Reset\nGateway Registration\nGetting your Gateway connected to the Senet network is as simple as following the directions below:\n1.Register the Gateway through the Senet Portal.\nDashboard Table View:Click on the add buttonbelow the Gateways Table.DashboardTile View:Click on the add buttonnext toDevices & Gatewaysto display the following window. Click on the image belowGateway.\nDashboard Table View:Click on the add buttonbelow the Gateways Table.\nDashboardTile View:Click on the add buttonnext toDevices & Gatewaysto display the following window. Click on the image belowGateway.\nTheRegister Gatewaywindow will appear. Follow the step-by-step instructions.\nTheRegister Gatewaywindow will appear. Follow the step-by-step instructions.\nOnce registration is complete the Gateway will be displayed in the Portal Dashboard with the current registration status (this may require a refresh of the browser).\nOnce registration is complete the Gateway will be displayed in the Portal Dashboard with the current registration status (this may require a refresh of the browser).\n2.Install Senet Gateway Software\nSkip this step if using the Semtech packet forwarder or Basic Station software. This step is only necessary when installing the Senet packet forwarder.\nSeeSupported Gatewaysfor specific instructions.\n3.Verify Registration\nFrom the Portal Dashboard the Gateway's registration status will change from \"Pending Approval\" to \"Approved\" or \"Registered\" state when final network provisioning has been completed. When the Gateway begins to communicate on the network the extended status will change to “Active” (this may also require a refresh of the browser).\n\nGateway Communication Ports in Use\nBelow are tables of ports used by the Gateway to communicate with the Senet Network, depending on which packet forwarding software is configured. The included domain and port information can be used for whitelisting these communications on a network.\nSemtech Basic Station will use ports 6042,6044 or 6038,6040, depending on the authentication mode configured.\nGateway Registration Reset\nWhen a Gateway experiences a connection issue, reinstalling the Senet packet forwarder is a typical first action to remedy the problem. However, this may strand the Gateway, leaving it unable to connect to the network. To streamline this process a Gateway can be placed into a registration-reset state, allowing the Gateway to reconnect after an install / reinstall. Once in this state, connectivity to the network will be available for up to five minutes since the last registration request.\nWarning: If this workflow is used for a Gateway currently on the network, it will be disconnected. It is important to ensure a Gateway is attempting re-register before placing it into the registration-reset state.\nThis workflow can be initiated from the Dashboard's tile view: click theRegister Reset Buttonin the Gateway tile view or table view to begin.\n\n\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
169 },
170 {
171 "platform": "Senet",
172 "type": "docs",
173 "source": "https://docs.senetco.io/ap/#diagnostic-mode",
174 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
175 },
176 {
177 "platform": "Senet",
178 "type": "docs",
179 "source": "https://docs.senetco.io/ap/mgmt/",
180 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nOverview\nStates & Transitions\nDevice Fields\nToken Management (MFA)\nRegister Devices\nActivate Devices\nDeactivate Devices\nDevice Update\nTransferring Devices\nFirmware Update Over The Air (FUOTA)\nOverview\nLoRaWAN uses an AES 128 CCM security model with the End Devices and the Join Server both provisioned with the End Device’s root key(s). The Join Server is used to authorize the Device and distribute session keys to the Network Server and Application Server while the End Device generates these same session keys locally. Typically, the manufacturer of Devices supporting Over-The-Air Activation (OTAA) will supply the Application Provider a manifest containing the Device EUI (DevEUI), Join Server EUI, (JoinEUI sometimes called the AppEUI) and Root Key(s) (LoRa v1.0 AppKey, LoRa v1.1 NwkKey and AppKey). Note, as a best practice, the JoinEUI should be specific to the Application Provider. Registration is the process of loading the DevEUI/RootKey(s) and associated meta data for each End Device on to the Join Server. The Activation process informs the network server that the Device is allowed on the network.\nTo activate a Device on the network it must be assigned to aContract. This Device to Contract association establishes a billing relationship and the communications entitlement for a pool of Devices. When Contracts are established, Contract IDs are assigned by Senet and made available to associate in the Registration and Activation processes. When a Device is Activated it transitions to a billable state.\nRegistration and Activation may be accomplished using the UI in the Application Provider Portal or via API with JSON. It is important to note that once a Device has been Joined to the network the Contract assigned to the Device cannot be changed. In the event a Contract was incorrectly assigned, Support can assist with changing the Contract associated with Devices.\nStates & Transitions\n\nDevice Fields\nThe table below details the purpose, expected data type and format of a Device's data fields. The table also identifies when the fields can be set in relation to the Device State Transitions described above.\nDevice Contracts can only be changed when Transitioning to Deactivated or Activated.\nState Transitions cannot be repeated. Example: an Activated Device cannot be Activated.\n* Only Devices which have Joined the Network.\n** Only Devices which have not Joined the Network.\n*** Only Devices configured for ABP - Activation by Personalization.\nToken Management (MFA)\nRegistration requires multi-factor authentication: an authentication token must be requested and then submitted. A token may be requested either during the registration process (see below) or directly from theDevice Managementtable. In response to a token request, an email with a token (six-digit code) is emailed to the requesting user account. By default the token has a one-hour lifetime and a single use count, however the token lifespan can be configured as part of the request process.\nAn Application can have only one active token. Once consumed (use count runs out) or expired, a new one must be requested. Successful requests always replace the current token, regardless of expiration or any remaining uses.\nNote\nDevice Activation and Device Deactivation do not require multi-factor authentication.\nTo get started, navigate to theDevice Managementtable.\nClick thetab\nIf there are multiple applications; from the EUI column click the application EUI to navigate to the Application Detail View. Otherwise the view will automatically be directed to the Application Detail View.\nFrom the Application Detail View, Navigate to the Device Management view by clicking on thebutton\nFrom theDevice Managementtable, select the uploadbutton to start the registration process.\nRegister Devices\nA registered Device must be Activated before it can join the network.\nA Device must be registered before it can be Activated.\nThe Application EUI and Join Server EUI for the Devices must be confirmed during Registration, Activation and Deactivation to verify the association for billing and accounting purposes.\nTo Register Devices, select theRegisteraction, and click the ellipsis to upload a CSV file.\n\nEntering an Authentication Token\nWhen the Upload File button is clicked, the following dialog allows the user to request and submit a token. When a token request is made, the settings for the token lifespan can be configured. These are the same settings that are managed from theApplicationstable.\n\nClicking theRequest Tokenbutton triggers display of the token configuration fields.\n\nNote\nIf multiple users manage the same Application, token management must be coordinated.\nAfter a file is selected and a valid token supplied, a confirmation dialog appears.\nDuring Registration the user is required to provide theActivation Typeand may optionally assign both aDevice ProfileandContract.\nActivation Typeidentifies the join-method used by the Devices being registered, indicating to the Network Server the types of required and optional personalization data in the file being uploaded. The default is 'OTAA - Over The Air Activation'.\nOptionally, theDevice ProfileandContractmay be set. If either association is unknown at the time, 'Do Not Set' may be selected as the may alternately be assigned during Activation. If noContractorDevice Profileis selected as part of either operation, the default settings for each - as configured for the Device's associated Application - are set when the Devices join the Network.\nLastly, informational tags may be applied to the Devices being registered.\n\nNote\nWhen the Activation Type is set to ABP, the NS will provision - as part of Registration - one or both of the session keys (nwkSKey and appSKey) for each Device if not found in the supplied CSV file.\nSelectYesto proceed registering the Devices in the selected file.\nOnce the file's data is validated, a summary is displayed.\nIf the upload fails or the data is invalid, error feedback is provided.\n\nDuplicate Device registrations are specifically not allowed. Attempts to register Devices on more than one Application or Join Server will fail as shown here:\n\nExample LoRaWAN 1.0.X OTAA Registration CSV Format\n####################################################\n# Required Fields: devEui, appKey, \n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n####################################################\ndevEui, appKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui, appKey, \n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n####################################################\ndevEui, appKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.1+ OTAA Registration CSV Format\n####################################################\n# Required Fields: devEui, appKey, nwkKey\n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n####################################################\ndevEui, appKey, nwkKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,D10922FA7B117BE10B38C06C04A363BB,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,9309DD725B3864DDF7ED6B9545E2AA16,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui, appKey, nwkKey\n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n####################################################\ndevEui, appKey, nwkKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,D10922FA7B117BE10B38C06C04A363BB,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,9309DD725B3864DDF7ED6B9545E2AA16,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.0 ABP Only or OTAA with Active Session Registration CSV Format\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, nwkSKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n# Optional OTAA Fields: appKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, nwkSKey, appKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, nwkSKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n# Optional OTAA Fields: appKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, nwkSKey, appKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.1+ ABP Only or OTAA with Active Session Registration CSV Format\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n# Optional OTAA Fields: appKey, nwkKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, appKey, nwkKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,DFAE2CC785B7665EB2F5F680BA2F7A53,3C8994815DD251CBB40D7E2174A6224C,710BC6BC680AA8D6E9383CA7EA4F5427,0B76FAB3C1A189403C145BF1FCB08647,5106140251972BDF23D2140BB67802FB,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,779959C52180C5D700F8A64E6A9A9828,62D7D043B482727294FC63EE68BE6D35,C7A0FF1B1BF0CB09A4D3CC5CC9D72FAF,E4FFBA476D97E00D7E38EFD6BF883A32,03B79A7CDC2554CA9669C0DE243015B1,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n# Optional OTAA Fields: appKey, nwkKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, appKey, nwkKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,DFAE2CC785B7665EB2F5F680BA2F7A53,3C8994815DD251CBB40D7E2174A6224C,710BC6BC680AA8D6E9383CA7EA4F5427,0B76FAB3C1A189403C145BF1FCB08647,5106140251972BDF23D2140BB67802FB,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,779959C52180C5D700F8A64E6A9A9828,62D7D043B482727294FC63EE68BE6D35,C7A0FF1B1BF0CB09A4D3CC5CC9D72FAF,E4FFBA476D97E00D7E38EFD6BF883A32,03B79A7CDC2554CA9669C0DE243015B1,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nDuplicate Application Keys\nDuplicate Application keys are allowed but strongly discouraged as a potential security risk. If duplicate Application keys are detected in the CSV file, the following warning is displayed:\n\nActivate Devices\nAn Activated Device may join the network and start uplinking.Devices in this state are not considered \"Active\" until they have joined the network. Once a Device has joined the network, it appears in theDevicestable.\nRequired column names in the CSV header:devEui\nPopulate thedevEuicolumn with previously registered or Deactivated Device EUIs.\nSelectActivatein the action, and click the ellipsis to upload a CSV file of previously registered Devices.\n\nAfter a file is selected a confirmation dialog appears.\nThis dialog requires the user to choose a Contract and Device Profile for the Devices in the csv file.\nOptionally, informational tags may be updated or applied to this group of Devices.\nSelectYesto upload the selected file.\nNote\nDevice Profiles and Contracts are set when a Device joins the network. Prior to joining, these values can be preselected. The value selected during activation will override the value selected during registration. If \"Current or Default\" is selected, the value assigned during registration will be used. If a Device was not assigned a Contract or Profile during registration, its Application's defaults will be used. After a Device joins, the Contract can be updated through deactivation.\n\nThe results of the activation are shown after the file is processed.\n\nNote\nIf not included in the CSV at Registration, Activation for ABP Devices will provision a devAddr for each device. Since the NS may have previously provisioned the nwkSKey and appSKey parameters as part of Registration, the Activation Results dialog allows the user to export of all the devices' ABP data to CSV formatted file. The 'Export' button is available only when the Activation is completed by uploading the CSV file used for Registration.\n\nExample LoRaWAN 1.0.X OTAA Activation CSV Format\n####################################################\n# Required Fields: devEui, appKey, \n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n####################################################\ndevEui, appKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui, appKey, \n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n####################################################\ndevEui, appKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.1+ OTAA Activation CSV Format\n####################################################\n# Required Fields: devEui, appKey, nwkKey\n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n####################################################\ndevEui, appKey, nwkKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,D10922FA7B117BE10B38C06C04A363BB,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,9309DD725B3864DDF7ED6B9545E2AA16,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui, appKey, nwkKey\n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n####################################################\ndevEui, appKey, nwkKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,D10922FA7B117BE10B38C06C04A363BB,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,9309DD725B3864DDF7ED6B9545E2AA16,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.0 ABP Only or OTAA with Active Session Activation CSV Format\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, nwkSKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n# Optional OTAA Fields: appKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, nwkSKey, appKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, nwkSKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n# Optional OTAA Fields: appKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, nwkSKey, appKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.1+ ABP Only or OTAA with Active Session Activation CSV Format\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n# Optional OTAA Fields: appKey, nwkKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, appKey, nwkKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,DFAE2CC785B7665EB2F5F680BA2F7A53,3C8994815DD251CBB40D7E2174A6224C,710BC6BC680AA8D6E9383CA7EA4F5427,0B76FAB3C1A189403C145BF1FCB08647,5106140251972BDF23D2140BB67802FB,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,779959C52180C5D700F8A64E6A9A9828,62D7D043B482727294FC63EE68BE6D35,C7A0FF1B1BF0CB09A4D3CC5CC9D72FAF,E4FFBA476D97E00D7E38EFD6BF883A32,03B79A7CDC2554CA9669C0DE243015B1,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n>>>>>>> 833b5a8 (Case 16856: Docs - update registration examples.)\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n# Optional OTAA Fields: appKey, nwkKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, appKey, nwkKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,DFAE2CC785B7665EB2F5F680BA2F7A53,3C8994815DD251CBB40D7E2174A6224C,710BC6BC680AA8D6E9383CA7EA4F5427,0B76FAB3C1A189403C145BF1FCB08647,5106140251972BDF23D2140BB67802FB,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,779959C52180C5D700F8A64E6A9A9828,62D7D043B482727294FC63EE68BE6D35,C7A0FF1B1BF0CB09A4D3CC5CC9D72FAF,E4FFBA476D97E00D7E38EFD6BF883A32,03B79A7CDC2554CA9669C0DE243015B1,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n>>>>>>> 833b5a8 (Case 16856: Docs - update registration examples.)\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nDeactivate Devices\nOnce Deactivated, Devices cannot join or rejoin the network. However, a previously joined Device can continue uplinking after deactivation.\nA Device must be registered before it can be Deactivated.\nA Device that is administratively Deactivated but continues to communicate on the network is in an active billing state. To avoid billing for Deactivated Devices, they must not be heard by the network for the entire billing cycle.\nRequired column names in the CSV header:devEui\nPopulate thedevEuicolumn with previously Activated or registered Device EUIs.\nSelectDeactivatein the action, and click the ellipsis to upload a CSV file of previously registered or Activated Devices.\n\nAfter a file is selected a confirmation dialog appears. This dialog requires the user to choose a Contract for the Devices in the csv file. The Device's current Contract can be used by selectingCurrent.\nNote\nThe Contract can be updated if the Devices are Activated from the Deactivated state.\n\nThe results of the deactivation are shown after the file is processed.\n\nExample Deactivation CSV Format\n####################################################\n# Required Fields: devEui\n####################################################\ndevEui\nAA11111F00000001\nAA11111F00000002\n####################################################\n# Required Fields: devEui\n####################################################\ndevEui\nAA11111F00000001\nAA11111F00000002\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nDevice Update\nUpload a CSV file to update Device fields for all Registered and Activated Devices. The Devices' latitude, longitude, tags, metadata, devType, devClass, fwVer, appKey and nwkKey fields can be edited. From theDevicestable, select the uploadbutton to display the window below.\nApplication Keys are updated from theDevice Managementtable using the same process. Click on thebutton to perform a key update.\n\nWhen thebutton is clicked, a file upload window will be displayed. After a file is selected, click on theUpload Fileto proceed.\n\nTags in the update can append, replace or delete existing tags based on the selected operation. The tags can be specified for individual Devices using a tags column in the csv file or for the full set of Devices using the tags input. The uploaded latitude and longitude will always replace the existing Device data. SelectYesto upload the previously selected file.\nIf the upload succeeds and the data is valid, an upload summary and any messages from the server will be displayed. If the upload fails or the data is invalid, an error message will be displayed. Devices included in the CSV will only be skipped if they do not exist.\nExample Update CSV Format\n###################################################################################\n# Required Fields: devEui\n# Optional Fields: appKey, nwkKey, mcRootKey, \n# appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey\n# fCntUp, fCntDown, lat, lng, tags, metadata, devType, devClass, fwVer, txPeriod, devProfId\n##################################################################################\ndevEui, appKey, nwkKey, mcRootKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devClass, fwVer, txPeriod, devProfId, appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey\nAA11111F00000001,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11,,,256,20,42.356959,-71.053271,tag1;tag2-LW10,metadata1,WATER_SENSOR,A,1.0.20,3600,222,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17,,,,,\nAA11111F00000002,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23,1057,90,42.356779,-71.065271,tag1;tag2-LW11,metadata2,WATER_SENSOR,B,2.1.2,86400,223,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C\n###################################################################################\n# Required Fields: devEui\n# Optional Fields: appKey, nwkKey, mcRootKey, \n# appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey\n# fCntUp, fCntDown, lat, lng, tags, metadata, devType, devClass, fwVer, txPeriod, devProfId\n##################################################################################\ndevEui, appKey, nwkKey, mcRootKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devClass, fwVer, txPeriod, devProfId, appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey\nAA11111F00000001,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11,,,256,20,42.356959,-71.053271,tag1;tag2-LW10,metadata1,WATER_SENSOR,A,1.0.20,3600,222,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17,,,,,\nAA11111F00000002,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23,1057,90,42.356779,-71.065271,tag1;tag2-LW11,metadata2,WATER_SENSOR,B,2.1.2,86400,223,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nNote\nThe appKey, nwkKey, mcRootKey, appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jsIntKey, and jsEncKey field values are 32 character hexadecimal values used to secure Device communication: they should be both distinct and uniquely defined for each Device. The values shown above should not be used; they are are provided as examples only.\nTransferring Devices\nDevices can be transferred between Join Servers and Accounts. These functions are accessed by clicking on thebutton in the Device Management view and selecting the desired type from the menu. The option to transfer a Device between Join Servers is only enabled if there are multiple Join Servers associated with the Application.\n\nTransferring Devices Between Join Servers\nSelecting the option toTransfer Devices to New Join Serverlaunches a dialog that displays the current Join Server and a dropdown containing all Join Servers currently associated with the Application. Select the desired destination Join Server, enter the EUI of the current Join Server to confirm the transfer and press the OK button to continue. If the operation is successful, the Device should appear in the Device Management table of the destination Join Server.\n\nTransferring Devices Between Accounts\nSelecting the option toTransfer Devices to Another Accountlaunches a dialog containing multiple several fields that are filled in to complete the transfer. These include:\nCurrent Application API Key (Required)\nTarget Application EUI (Required)\nTarget Application API Key (Required)\nTarget Contract ID (Required)\nTarget Profile ID (Optional)\n\nIf several Devices are selected for transfer, the operation may take some time to complete. When the dialog is opened while an ongoing transfer operation is in progress, a progress bar is shown with the current status.\n\nOnce the transfer completes, the dialog will show the final status.\n\nAdding a Device to an Unknown or Unregistered Join Server\nOccasionally it may be necessary to Register a single Device with a Join Server that has not been Registered. Such Devices can be added by selecting the Wildcard Join Server from the dropdown in the Device Management view.\n\nClick thebutton to launch the Add Device dialog.\nEnter the required Device Registration information including Device EUI, Application Key, Contract, Device Profile, and Join EUI or * if the Join EUI is not known.\nClick the Add New Device button to save the information and add the Device.\n\nOnce the information is entered and saved, the Device should appear in the Wildcard Join Server's list of Devices.\nFirmware Update Over The Air (FUOTA)\nDevice Requirements\nImplementation of LoRaWAN FUOTA Ver 1.0.0 or 2.0.0 as specified by the LoRa-Alliance's FUOTA Working Group.\nThe ability to transition from Class A mode to either Class C or B multicast operation and back again to Class A.\nFunctionality to manage the additional power consumption associated with large data transport operations.\nOS-level primitives and on-board memory to support receiving and storing the update file.\nA methodology for replacing some or all of its running image\nNote\nReference implementations are available fromStackforceandArm Mbed.\nResponsibilities\nLoRaWAN and Regulatory (FCC, ETSI, etc) certification may be impacted by a firmware update.\nDevice vendors must work with their radio-module manufacturers to determine support for the FUOTA protocol layers and whether the radio module itself can be updated by either the host processor or the application stack running on the module. Requirements may be simpler if updates only involve a configuration file rather than an entire (or partial) firmware image.\nApplication Providers must have a methodology for identifying Devices that fail an update.\nPre-Requisites\nA list of Devices to update\nA full firmware update or patch file to distribute\nA 4-byte descriptor value of the file (described inLoRaWAN Fragmented Data Block Transport Specification v1.0.0)\nProcess\nFrom the Devices table within the Application Details view, select one or more rows of Devices to update, then click the 'Firmware Update' button:\nFrom the Devices table within the Application Details view, select one or more rows of Devices to update, then click the 'Firmware Update' button:\n\nOnce the 'Update Devices' dialog launches, fill-in the form to set the image-transfer parameters. Each field is described below.Contract:The selected Contract determines how the Customer is billed by Senet for the FUOTA events.Start Time:The time scheduled to initialize the firmware update. A minimum of 3 successful downlinks are required to set up the multicast group. This time must accommodate the largest uplink interval among the group's Devices as well as consider potential packet loss.NoteThe progression of multicast setup downlinks [McGroupSetup --> McGroupCSess --> FragSessSetup] will not proceed until all corresponding answer uplinks are received.Nwk--McGroupSetupReq-->DevNwk<--McGroupSetupAns--DevNwk--McGroupCSessReq-->DevNwk<--McGroupCSessAns--DevNwk--FragSessSetupReq-->DevNwk<--FragSessSetupAns--DevFragmentation:Currently supported methods used to fragment the file:Forward Error Correction:As defined by the FUOTA specification.Retransmit:The entire file is transmitted multiple times.Redundancy:Per the Fragmentation method selected:Forward Error Correction:Redundancy is the percent of additional frames transmitted based on the frame count required to transmit the file once. For example, a redundancy of 30% for 100 frames would generate a total packet count of 130.Retransmits:Redundancy is the total number of times the file will be sent. For example, a redundancy of 1 for a 100 frames would generate a total packet count of 200.Tx Channel:Channel frequency that the file will be multicast on. Should only be modified in response to local interference on the default channel.Tx Data Rate:Data Rate that the file will be multicast at. May be modified to adjust time on air or increase the probability of success.FUOTA Version:The FUOTA version implemented by the targeted group of Devices. Versions 1.0.0 and 2.0.0 are incompatible.Multi-Package Support:This may be set to 'Enabled' if the targeted Devices support theLoRaWAN Multi Package Access Protocolas defined by LoRa-Alliance's FUOTA Working Group.Packet Delay (ms):The minimum delay allowed between transmission of the data fragment packets. Any modifications required due to regional duty-cycle restrictions will be handled by the Network.Descriptor:The 4-byte value provided to the multicast group in the FragSessSetupReq that identifies the file to be sent.Device Class:The Class-mode - either Class B or C - the targeted Devices will transition to in order to receive the file, based on their implementation(s).Max Fragment Size:The maximum fragment size allow for transmit. This setting should accommodate Devices with fragment size limitations. When set to -1, the LNS sets this value to the maximum downlink size allowed for the region.Upload File:The binary file to be multicast to the targeted Device group, using the above parameters.\nOnce the 'Update Devices' dialog launches, fill-in the form to set the image-transfer parameters. Each field is described below.\n\nContract:The selected Contract determines how the Customer is billed by Senet for the FUOTA events.\nStart Time:The time scheduled to initialize the firmware update. A minimum of 3 successful downlinks are required to set up the multicast group. This time must accommodate the largest uplink interval among the group's Devices as well as consider potential packet loss.\nNote\nThe progression of multicast setup downlinks [McGroupSetup --> McGroupCSess --> FragSessSetup] will not proceed until all corresponding answer uplinks are received.\nNwk--McGroupSetupReq-->DevNwk<--McGroupSetupAns--DevNwk--McGroupCSessReq-->DevNwk<--McGroupCSessAns--DevNwk--FragSessSetupReq-->DevNwk<--FragSessSetupAns--Dev\nNwk--McGroupSetupReq-->DevNwk<--McGroupSetupAns--DevNwk--McGroupCSessReq-->DevNwk<--McGroupCSessAns--DevNwk--FragSessSetupReq-->DevNwk<--FragSessSetupAns--Dev\nFragmentation:Currently supported methods used to fragment the file:\nForward Error Correction:As defined by the FUOTA specification.\nForward Error Correction:As defined by the FUOTA specification.\nRetransmit:The entire file is transmitted multiple times.\nRetransmit:The entire file is transmitted multiple times.\nRedundancy:Per the Fragmentation method selected:\nForward Error Correction:Redundancy is the percent of additional frames transmitted based on the frame count required to transmit the file once. For example, a redundancy of 30% for 100 frames would generate a total packet count of 130.\nForward Error Correction:Redundancy is the percent of additional frames transmitted based on the frame count required to transmit the file once. For example, a redundancy of 30% for 100 frames would generate a total packet count of 130.\nRetransmits:Redundancy is the total number of times the file will be sent. For example, a redundancy of 1 for a 100 frames would generate a total packet count of 200.\nRetransmits:Redundancy is the total number of times the file will be sent. For example, a redundancy of 1 for a 100 frames would generate a total packet count of 200.\nTx Channel:Channel frequency that the file will be multicast on. Should only be modified in response to local interference on the default channel.\nTx Data Rate:Data Rate that the file will be multicast at. May be modified to adjust time on air or increase the probability of success.\nFUOTA Version:The FUOTA version implemented by the targeted group of Devices. Versions 1.0.0 and 2.0.0 are incompatible.\nMulti-Package Support:This may be set to 'Enabled' if the targeted Devices support theLoRaWAN Multi Package Access Protocolas defined by LoRa-Alliance's FUOTA Working Group.\nPacket Delay (ms):The minimum delay allowed between transmission of the data fragment packets. Any modifications required due to regional duty-cycle restrictions will be handled by the Network.\nDescriptor:The 4-byte value provided to the multicast group in the FragSessSetupReq that identifies the file to be sent.\nDevice Class:The Class-mode - either Class B or C - the targeted Devices will transition to in order to receive the file, based on their implementation(s).\nMax Fragment Size:The maximum fragment size allow for transmit. This setting should accommodate Devices with fragment size limitations. When set to -1, the LNS sets this value to the maximum downlink size allowed for the region.\nUpload File:The binary file to be multicast to the targeted Device group, using the above parameters.\nWhile the Device sessions are initializing, a 'Job Status: Queued' indicates when the Firmware Update is targeted to begin:\nWhile the Device sessions are initializing, a 'Job Status: Queued' indicates when the Firmware Update is targeted to begin:\n\nApplication commands are sent to setup the multicast and fragmentation sessions with the Devices:\nApplication commands are sent to setup the multicast and fragmentation sessions with the Devices:\n\n\nThe Status of the Firmware Update is updated as Fragments are sent:\nThe Status of the Firmware Update is updated as Fragments are sent:\n\nOnce all Fragments are sent, the Update status reflects the completed Firmware Update:\nOnce all Fragments are sent, the Update status reflects the completed Firmware Update:\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
181 },
182 {
183 "platform": "Senet",
184 "type": "docs",
185 "source": "https://docs.senetco.io/dev/#edit-device",
186 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nDeveloper Documentation\nDashboard\nDevice Details\nEdit Device\nGateway Details\nEdit Gateway\nDelete Gateway\nDeveloper Documentation\nIoT development for the Senet Network\n\nJoin the Community\nUse theSenet Communityto ask question, read articles, talk to Senet employees and other Portal users.\nDashboard\nThe Dashboard is the main view of the Portal. Users can connect their Devices and Gateways to the Senet Network through a simple registration process. The Dashboard displays high level statistics and RF data to help users monitor their equipment.\nCustomize the Dashboard\nClick on the gearin the top-right corner.\nOptions are displayed to choose a view and toggle Dashboard features.\n\nNote\nWhen the Tile View is selected, theTile Sortingoptions are displayed at the bottom of the Dashboard Settings. When the Table View is selected, rows can be sorted by clicking on the column headers.\nTile View\nChoose theTile Viewin theDashboard Settingsto display each Devices or Gateways in a tile. The tiles show network and configuration data along with a graph to display transaction and RF statistics.\n\nClick on the plus iconabove the tiles to open the registration window shown below.\n\nClick on the Device image to register a Device or the Gateway image to register a Gateway. See theDevice Registrationdocumentation orGateway Registrationdocumentation for step-by-step instructions.\nClick on the menu buttonin the top right corner of the tile. Click on the delete buttonto remove the Device or Gateway. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\n\nTable View\nChoose theTable Viewin theDashboard Settingsto display the Devices and Gateways in separate tables.\n\nClick on the register buttonabove the Device or Gateway table to open the respective registration window. See theDevice Registrationdocumentation or theGateway Registrationdocumentation for step-by-step instructions.\nClick on a row to select a Device or Gateway. Click on the delete buttonto remove the selected item. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\nThere are two options provided for deleting a Device:\nDelete the Device from the Network.\nDelete the Device from the Account only.\nDeleting the Device from the Network removes the Device from the NMS completely. It will not be able to communicate on the Senet Network following the deletion.\nDeleting the Device from the Account leaves the Device in an active state on the Network, but removes it from display in the Developer view. Deleting a Device from an Account also removes any Device specific Notification Targets. Data from the Device will not be forwarded until it is associated with a new Account and Notification Target.\n\nNetwork Delete\n\nAccount Delete\n\nDevice Details\nClick on a Device EUI or Device image in the dashboard to open theDevice Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above allows users to edit their Device, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open theEdit Devicewindow\nSend Downlink\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\nEdit Device\nEdit the Device description, type and notes in the DETAILS tab.\n\nEdit the Device latitude and longitude in the LOCATION tab.\n\nEdit theNotification Targetin the NOTIFICATION TARGET tab.\n\nSelect LoRaWAN Device settings can be overriden in the DEVICE PROFILE tab. These configure the behavior of the Device on the network and do not normally need to be changed. Accordingly, this tab is not visible by default. Check the Device Profile checkbox on the DETAILS tab to display this tab.\n\nThe following table contains the list of LoRaWAN settings that can be set in this tab:\nGateway Details\nClick on a Gateway EUI or Gateway image in the Dashboard to open theGateway Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above displays information and statistics about the Gateway. Click on thebutton to minimize.\nEdit Gateway\nEdit the Gateway installation information.\n\nDelete Gateway\nClick thebutton in the table view or thebutton in the tile view to remove the Gateway. A dialog is shown to confirm the delete request. The dialog includes a checkbox to indicate that the Gateway should also be permanently removed from the network. If the box is not checked, only the user's association to the Gateway is removed.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
187 },
188 {
189 "platform": "Senet",
190 "type": "docs",
191 "source": "https://docs.senetco.io/rp/adminApiKeys/",
192 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nAPI Key Management\nCustomer API Keys\nDeleting an API Key\nAPI Key Management\nSenet's integration APIs are secured through the use of API keys. Administrative users can generate new keys to provide targeted access to specific features, as well as delete existing keys using the 'API Keys' view, found under 'Administration'.\n\nClick thebutton to create a new key.\n\nCustomer API Keys\nCustomer API Keys provide access to Base Station management APIs.\nCustomer Access Roles\nThe following Roles scope access to the Base Station integration APIs. These include:\nDeleting an API Key\nAPI Keys cannot be edited: only created or deleted. To delete, select the targeted key's row from the table and press thebutton. A dialog will appear. Enter the API key's Customer ID to confirm deletion.\n\nNote\nIf the selected key was used within the past 3 days, the dialog will require an additional confirmation.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
193 },
194 {
195 "platform": "Senet",
196 "type": "docs",
197 "source": "https://docs.senetco.io/rp/gwReg/",
198 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nBase Stations\nIntegration Overview\nSupported Base Stations\nBase Station Registration\nBase Stations\nIntegration Overview\nIn order to integrate your Base Station with Senet's Network, it must be on-boarded. This process involves:\nRegistration.\nRegistration.\nInstallation & configuration of a supported packet forwarder.\nInstallation & configuration of a supported packet forwarder.\nOnce registration is complete your Base Station's packet forwarder will communicate with Senet's network.\nSenet Packet Forwarder for RAN providers\nThis integration option is applicable to Radio Access Network (RAN) Providers deploying Base Stations at scale. This option increases security over the standard Senet Packet Forwarder, which includes restricting local user accounts and preventing remote access.\nNote\nBase Station Registration and Software Installation is only required for devices that are new to the Senet Network. If Senet provided the Base Station, no further action is necessary.\nSupported Base Stations\nFor a list of supported Base Stations please see theBase Stations Softwaredocumentation.\nBase Station Registration\nRegistration for RAN Providers\nLog into the Portal with your RAN Provider account.\nFrom the landing page click the + button to add a new Base Station.\nYou will be presented with a Create Base Station window.\nSelect the Model type of the Base Station to connect to the network.\nInput the serial number for the Base Station. For more information on how to obtain the serial number and the proper format pleases see the Base Station specific documentation.\nAllocate an EUI for the Base Station to be used. If the Base Station does not have an EUI (most common) click the button to allocate an EUI from Senet's EUI registry.\nConfirm EUI Allocation\nOptionally set a name for the Base Station.\nOptionally set the Admin Status for the Base Station.\nSelect the channel plan to be used for this Base Station. Default is US Channel Plan.\nSelect the RX channels to be used, this should be properly defaulted. It is not recommended to change these values.\nAdvanced - Set a Channel Mask to disable specific channels.\nOptionally set the Alert Level for the Base Station.\nSelect the type of Base Station being added to the network.\nFill in the installation info for where and how the Base Station will be installed\nIf you do not know the GPS coordinates of the Base Station, click the button to automatically geo-locate the coordinates based on the earlier provided address.\nClick Save, once complete your Base Station will be added to the table.\nIf you have not done so, install the RAN provider software on the Base Station. The install instructions can be found in the Base Station specific documentation.\nWhen the Base Station is online with the software properly installed and talking to the network, you will see a green status indicator.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
199 },
200 {
201 "platform": "Senet",
202 "type": "docs",
203 "source": "https://docs.senetco.io/dev/#developer-documentation",
204 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nDeveloper Documentation\nDashboard\nDevice Details\nEdit Device\nGateway Details\nEdit Gateway\nDelete Gateway\nDeveloper Documentation\nIoT development for the Senet Network\n\nJoin the Community\nUse theSenet Communityto ask question, read articles, talk to Senet employees and other Portal users.\nDashboard\nThe Dashboard is the main view of the Portal. Users can connect their Devices and Gateways to the Senet Network through a simple registration process. The Dashboard displays high level statistics and RF data to help users monitor their equipment.\nCustomize the Dashboard\nClick on the gearin the top-right corner.\nOptions are displayed to choose a view and toggle Dashboard features.\n\nNote\nWhen the Tile View is selected, theTile Sortingoptions are displayed at the bottom of the Dashboard Settings. When the Table View is selected, rows can be sorted by clicking on the column headers.\nTile View\nChoose theTile Viewin theDashboard Settingsto display each Devices or Gateways in a tile. The tiles show network and configuration data along with a graph to display transaction and RF statistics.\n\nClick on the plus iconabove the tiles to open the registration window shown below.\n\nClick on the Device image to register a Device or the Gateway image to register a Gateway. See theDevice Registrationdocumentation orGateway Registrationdocumentation for step-by-step instructions.\nClick on the menu buttonin the top right corner of the tile. Click on the delete buttonto remove the Device or Gateway. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\n\nTable View\nChoose theTable Viewin theDashboard Settingsto display the Devices and Gateways in separate tables.\n\nClick on the register buttonabove the Device or Gateway table to open the respective registration window. See theDevice Registrationdocumentation or theGateway Registrationdocumentation for step-by-step instructions.\nClick on a row to select a Device or Gateway. Click on the delete buttonto remove the selected item. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\nThere are two options provided for deleting a Device:\nDelete the Device from the Network.\nDelete the Device from the Account only.\nDeleting the Device from the Network removes the Device from the NMS completely. It will not be able to communicate on the Senet Network following the deletion.\nDeleting the Device from the Account leaves the Device in an active state on the Network, but removes it from display in the Developer view. Deleting a Device from an Account also removes any Device specific Notification Targets. Data from the Device will not be forwarded until it is associated with a new Account and Notification Target.\n\nNetwork Delete\n\nAccount Delete\n\nDevice Details\nClick on a Device EUI or Device image in the dashboard to open theDevice Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above allows users to edit their Device, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open theEdit Devicewindow\nSend Downlink\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\nEdit Device\nEdit the Device description, type and notes in the DETAILS tab.\n\nEdit the Device latitude and longitude in the LOCATION tab.\n\nEdit theNotification Targetin the NOTIFICATION TARGET tab.\n\nSelect LoRaWAN Device settings can be overriden in the DEVICE PROFILE tab. These configure the behavior of the Device on the network and do not normally need to be changed. Accordingly, this tab is not visible by default. Check the Device Profile checkbox on the DETAILS tab to display this tab.\n\nThe following table contains the list of LoRaWAN settings that can be set in this tab:\nGateway Details\nClick on a Gateway EUI or Gateway image in the Dashboard to open theGateway Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above displays information and statistics about the Gateway. Click on thebutton to minimize.\nEdit Gateway\nEdit the Gateway installation information.\n\nDelete Gateway\nClick thebutton in the table view or thebutton in the tile view to remove the Gateway. A dialog is shown to confirm the delete request. The dialog includes a checkbox to indicate that the Gateway should also be permanently removed from the network. If the box is not checked, only the user's association to the Gateway is removed.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
205 },
206 {
207 "platform": "Senet",
208 "type": "docs",
209 "source": "https://docs.senetco.io/ap/#multicast-groups",
210 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
211 },
212 {
213 "platform": "Senet",
214 "type": "docs",
215 "source": "https://docs.senetco.io/rp/supportedRegions/",
216 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nSupported Regions\nUS 902-928 - 8 Channel Plan\nUS 902-928 - 64 Channel Plan\nEU 863-870 - 8 Channel Plan (867.1-867.9)\nEU 863-870 - 8 Channel Plan (868.1-869.5)\nEU 863-870 - 8 Channel Plan (866.5,866.7,867.1,867.3,867.9)\nEU 863-870 - 8 Channel Plan (867.1,867.3,867.5,867.9,868.9)\nEU 863-870 - 8 Channel Plan (866.8,867.1,867.3,867.7,867.9)\nEU 863-870 - 16 Channel Plan\nIndia 865-867 - 8 Channel Plan\nAS 923-1 - 8 Channel Plan (923.2-924.6)\nAS 923-1 - 8 Channel Plan (922.0-923.4)\nAS 923-1 - 16 Channel Plan (921.6-924.6)\nAS 923-1 - 16 Channel Plan (920.6-923.6)\nAS 923-2 - 8 Channel Plan (921.4-922.8)\nAS 923-3 - 8 Channel Plan (916.4-917.8)\nAS 923-4 - 8 Channel Plan (917.3-918.7)\nAU 915-928 - 8 Channel Plan\nAU 915-928 - 64 Channel Plan\nSupported Regions\nSenet supports the following regional channel plans. Please take note this is a limited set. For regional plans not listed please contactcustomer supportfor an updated list.\nUS 902-928 - 8 Channel Plan\nUS 902-928 - 64 Channel Plan\n\nEU 863-870 - 8 Channel Plan (867.1-867.9)\n\n\nEU 863-870 - 8 Channel Plan (868.1-869.5)\n\nEU 863-870 - 8 Channel Plan (866.5,866.7,867.1,867.3,867.9)\n\nEU 863-870 - 8 Channel Plan (867.1,867.3,867.5,867.9,868.9)\n\nEU 863-870 - 8 Channel Plan (866.8,867.1,867.3,867.7,867.9)\nEU 863-870 - 16 Channel Plan\nIndia 865-867 - 8 Channel Plan\nNote\nRX2 downlinks are sent on the default parameters 866.550 MHz / DR2 (SF10, 125 kHz).\nClass B Beacons are sent on the default parameters 866.550 MHz / DR4 (SF8, 125 kHz).\nAS 923-1 - 8 Channel Plan (923.2-924.6)\nCountries:Australia, Bangladesh , Brunei, Cambodia, Cook Islands, Costa Rica, Curacao, Hong Kong, Japan , Laos, Macao, New Zealand, Niue, Norfolk Island, Pakistan, Papua New Guinea, Singapore, Solomon Islands, Taiwan, Tanzania, Thailand, Tokelau, Uganda, Venezuela\nAS 923-1 - 8 Channel Plan (922.0-923.4)\nCountries:China, Malaysia, Myanmar\nAS 923-1 - 16 Channel Plan (921.6-924.6)\nCountries:Australia, Brunei, Cook Islands, Costa Rica, Curacao, Hong Kong, Japan, Macao, New Zealand, Niue, Norfolk Island, Pakistan, Papua New Guinea, Singapore, Solomon Islands, Taiwan, Tanzania, Thailand, Tokelau\nAS 923-1 - 16 Channel Plan (920.6-923.6)\nCountries:China, Malaysia, Myanmar, Singapore, Sri Lanka\nAS 923-2 - 8 Channel Plan (921.4-922.8)\nCountries:Indonesia, Vietnam\nAS 923-3 - 8 Channel Plan (916.4-917.8)\nCountries:Albania, Algeria, Bouvet Island, Comoros, Cuba, Denmark, Estonia, Greenland, Guernsey, Heard Island & McDonald Islands, Hungary, Iran, Ireland, Isle of Man, Jersey, Kuwait, Kuwait, Liechtenstein, Luxembourg, Moldova, Norway, Philippines, Poland, Russian Federation, Saudi Arabia, Slovakia, Somalia, So. Georgia/So. Sandwich Island, Svalbard and Jan Mayen, Switzerland, United Arab Emirates, United Kingdom, Vanuatu\nAS 923-4 - 8 Channel Plan (917.3-918.7)\nCountries:Israel\nAU 915-928 - 8 Channel Plan\nAU 915-928 - 64 Channel Plan\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
217 },
218 {
219 "platform": "Senet",
220 "type": "docs",
221 "source": "https://docs.senetco.io/ap/#devices-with-notifiers",
222 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
223 },
224 {
225 "platform": "Senet",
226 "type": "docs",
227 "source": "https://docs.senetco.io/rp/alerts/",
228 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nAlerts\nClearing Alerts\nDisabling Alerts\nBase Station Maintenance Mode\nCase Creation\nAlert Email Notifications\nBase Station Alerts\nBase Station Alert Profiles\nCritical Asset Alerts\nDevice and Transaction Trend Alerts\nBase Station Alert Statistics\nAlerts\nAlerts provide a targeted view into the network, highlighting conditions of interest or concern and reflecting Senet's operational assessment and response activity. For example, Base Station connectivity loss or high CPU utilization, as well as Application transaction threshold events.\n\nUsing the Alert Status selection control, the table can be filtered to explore past and regularly occurring events.\n\nClearing Alerts\nAlerts can be cleared at any time through the Alerts table, this will move the Alert to Cleared state and allow the input of a clearing reason. To perform a clear on a single or multiple Alerts, simply select each Alert row by clicking on the status. Once they are selected click thebutton and provide the reason for clearing the Alert.\n\nWhen finished, click OK and the alert will be cleared.\nNote\nThis doesn't stop the Alert from reoccurring but subsequent occurrences of the same Alert will be raised as new Alerts.\nDisabling Alerts\nAlerts can be temporarily disabled directly from the Alerts table. Select one or more Alerts from the table and click thebutton to disable them.\nClick Yes in the confirmation dialog to complete the action.\n\nBase Station Maintenance Mode\nThe Admin Status of a Base Station can be set to Maintenance directly from the Alerts table. A Base Station with this status will not generate Alerts and will not be visible in the Map. Select one or more Alert(s) from the table and click thebutton to set the the status.\nClick Yes in the confirmation dialog to complete the action.\n\nCase Creation\nCasesto track or address the underlying cause of an Alert can be created directly from the table. Select a single Alert from the table and click theto launch the Create Case dialog.\n\nSeeCreating a Casefor details on how to create a Case.\nAlert Email Notifications\nWhen an alert is raised, an email notification is sent to the configured Customer email address indicating that the alert failure has occurred. The list of recipients for this email list is configured and managed by the Network Operator.\nBase Station Alerts\nBase Station alerts notify providers of the status and health of deployed Base Stations. Alerts provide an indication that action is required to bring the Base Station back to full operating status. As an example, a Connection Alert may indicate that there was an interruption in the Base Station's ability to fully communicate with the network. This could be a pre-cursor to a total communication failure from the Base Station.\nAn example response to such an alert might include: following up with the install location to identify whether there was an internet outage or network change that impacted the Base Station's ability to communicate with the network. Frequent disconnects from a Base Station could be indicative of an unreliable backhaul connection potentially interfering with data delivery. This may necessitate investigation into additional options in order to shore up communication. Possible further remediation might include adding a redundant connection.\n*Priority represents the order in which the alerts are evaluated. If a higher priority alert is triggered, no further alerts are evaluated.\n\nNotes:\nTime drift alerts are not evaluated if the Base Station has recently reconnected or restarted.\nBase Station Alert Profiles\nAlert Profiles are custom Alert configurations for a Base Station or a set of Base Stations. These provide control over each Alert type's enabled status, trigger threshold, and custom email lists. The Alert Profiles table view shows all Profiles that have been created. However, not every created Profile is editable. The platform provider can choose to share Profiles. Shared Profiles are not editable, but can be assigned to any owned Base Stations.\n\nTo add a new Alert Profile, click thebutton and select the desired Profile configuration options.\n\nA Base Station can be assigned an Alert Profile at any time through any of the standard workflows; Base Station provisioning, Base Station assignable, Base Station Edit, and Base Station Replace. When the Base Station's Alert level is set to 'Custom' an additional dropdown appears, allowing selection from available Alerts Profiles (if none can be assigned, it will not be shown).\n\nCritical Asset Alerts\nProfiles also allow defining a custom list of email recipients for each Alert type. When triggered, recipients in the custom list will be notified a Critical Asset is experiencing an Alert. These are supplemental to the normal Alert notification activity and distinguished by the following:\n\nThese critical asset notifications can be configured for each Alert within an Alert Profile. Checking the Configure Notification List checkbox at the top of the dialog enables configuration of a comma separated list of email addresses to send critical asset notifications to. Once emails are configured, the Configure Notification List checkbox no longer needs to be checked when editing a profiles list.\nDevice and Transaction Trend Alerts\nOn an ongoing basis, both Device and Transaction count averages for a Base Station over the last 30 days are compared to yesterday's counts. Alerts are triggered when yesterday's counts are below the average by more than a predetermined percentage. To better monitor trends, days the Base Station is effected by other issues (e.g. back haul connectivity issues) are excluded from this evaluation. If the availability of the Base Station for any day within the 30 day trend is less than the given threshold of 80% (managed by Senet), it is excluded from the average. If yesterday's availability falls below the threshold, evaluation for these Alerts will not occur.\nAt least 7 days of data is required to determine a viable benchmark for the Device and Transaction counts. When there are fewer less than 7 days of viable data, either because the Base Station has newly joined the Network or due to not meeting the availability requirement, evaluation for these Alerts will not occur. For example if a Base Station was available for only 10 out of its 30 days online, the average over those 10 days will be compared with yesterday's data.\nBase Station Alert Statistics\nThe Base Station Alert Statistics table shows statistics for the number of alerts raised in the last hour, the last day and the last week for each managed Base Station on the network.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
229 },
230 {
231 "platform": "Senet",
232 "type": "docs",
233 "source": "https://docs.senetco.io/rp/gw/",
234 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nBase Station Software\nBase Stations provide the wireless network access for the End Devices, relaying data to and from the Senet Network Server via IP backhaul (Ethernet, Wi-Fi, 3 or 4 G cellular or satellite). As part of relaying data from End Devices, Gateways include RF meta-data about the data’s reception characteristics. The Network Server in turn leverages this information in real time to optimize the End Device.\nBase Stations are deployed to meet application, geographical, and End Device density coverage requirements. Coverage depends on topology characteristics and varies among rural, suburban, and urban environments. To meet these various needs, Gateways are available in a variety of sizes and may be deployed to provide indoor and outdoor coverage.\nIn order to integrate your Gateway with Senet's Network, it must be on-boarded. This process involves:\nRegistration and subsequent approval from Senet.Developer Gateway RegistrationRAN Provider and Operator Base Station Registration\nDeveloper Gateway Registration\nRAN Provider and Operator Base Station Registration\nInstallation & configuration of a supported LoRa Packet Forwarder.\nOnce approval is received your Gateway's packet forwarder will communicate with Senet's network. The level of security depends on the packet forwarder implementation. Currently Senet supports the following Packet Forwarder options:\nSupported Packet Forwarder Options\nNote\nAll Base Station types and supported packet forwarding options are capable of enrolling in theSenet LVN!\nSenet Packet Forwarder\nSupported Senet PF Base Stations\nSemtech Basics Station\nVerified Semtech BS Base Stations\nSemtech Packet Forwarder\nVerified Semtech PF Base Stations\nThe most reliable and feature rich PF option when available\nSecure end-to-end device communication\nFully remote management and monitoring supported by the Network Server\nOperates securely by default with no opt-out for long term stability and peace of mind\nRemote channel plan configuration through the Network Server\nSupports traffic filtering at the Base Station\nFulfils all tasks related to basic packet forwarding functionality for LoRaWAN\nSenet recommended TLS Secured mode increases security\nLimited channel plan configuration through the Network Server\nWidely supported by many vendors\nTraffic filtering is not supported\nSupported legacy option when neither Senet PF or Semtech BS are available\nUnsecured UDP communication\nManual channel plan configuration through the Base Station\nTraffic filtering is not supported\nCustomer Support\nContact a Senet IoT expert\nSemtech BS\nGeneric Configuration\nSemtech PF\nGeneric Configuration\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
235 },
236 {
237 "platform": "Senet",
238 "type": "docs",
239 "source": "https://docs.senetco.io/dev/dev/",
240 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nDevices\nDevice Registration\nDevice Registration - OTAA\nDevice Registration - ABP\nDevice Keys\nSenet Packet Format\nDevice Configuration\nDevices\nManage and monitor LoRa enabled Devices on the Senet Network\nDevice Registration\nOpen the Device registration window.Table View: Click on the add buttonabove the Devices table.Tile View: Click on the add buttonabove the tiles and then click Register Device.\nOpen the Device registration window.\nTable View: Click on the add buttonabove the Devices table.\nTable View: Click on the add buttonabove the Devices table.\nTile View: Click on the add buttonabove the tiles and then click Register Device.\nTile View: Click on the add buttonabove the tiles and then click Register Device.\nFind the assigned EUI of the Device being registered and enter the 16 hexadecimal characters in theDevice EUIfield.NoteIf the Device does not have an assigned EUI, one can be obtained by pressing theSenet's EUI Registrylink. A unique EUI from Senet will be provided .\nFind the assigned EUI of the Device being registered and enter the 16 hexadecimal characters in theDevice EUIfield.\nNote\nIf the Device does not have an assigned EUI, one can be obtained by pressing theSenet's EUI Registrylink. A unique EUI from Senet will be provided .\nChoose the appropriateActivation Typefor the Device.OTAA (Over-The-Air Activation)Over The Air Activation will provide the application key (AppKey) to provision the Device.ABP (Activation By Personalization)Activation By Personalization will provide the Device address (DevAddr), network session key (NwkSKey), and application session key (AppSKey) to provision the Device.\nChoose the appropriateActivation Typefor the Device.\nOTAA (Over-The-Air Activation)Over The Air Activation will provide the application key (AppKey) to provision the Device.\nOTAA (Over-The-Air Activation)\nOver The Air Activation will provide the application key (AppKey) to provision the Device.\n\nABP (Activation By Personalization)Activation By Personalization will provide the Device address (DevAddr), network session key (NwkSKey), and application session key (AppSKey) to provision the Device.\nABP (Activation By Personalization)\nActivation By Personalization will provide the Device address (DevAddr), network session key (NwkSKey), and application session key (AppSKey) to provision the Device.\n\nDevice Registration - OTAA\nCustom OTAA Registration\nIf the Device uses a custom Application Key and Join Server, use this registration method.\nEnter the EUI of the Device or obtain a Device EUI from Senet's EUI Registry.\nEnter the EUI of the Device or obtain a Device EUI from Senet's EUI Registry.\nEnter the custom Join Server EUI address in theJoin EUIfield.\nEnter the custom Join Server EUI address in theJoin EUIfield.\nEnter the custom Application Key in theApplication Keyfield.\nEnter the custom Application Key in theApplication Keyfield.\n(Optional) Enter aDescriptionfor the Device.\n(Optional) Enter aDescriptionfor the Device.\nSelect theDevice Type(default type isOther).\nSelect theDevice Type(default type isOther).\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\n(Optional) Add applicableDevice Notes.\n(Optional) Add applicableDevice Notes.\nClickRegister New Devicewhen complete.\nClickRegister New Devicewhen complete.\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.OTAA (Over-The-Air Activation Custom Keys)\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.\nOTAA (Over-The-Air Activation Custom Keys)\n\nSenet OTAA Registration\nSelect the Senet Allocated Join Information Checkbox to enable this registration mode. This will automatically provide the Join Server EUI and Application Key for the Device.\nSelect the Senet Allocated Join Information Checkbox to enable this registration mode. This will automatically provide the Join Server EUI and Application Key for the Device.\n(Optional) Enter aDescriptionfor the Device.\n(Optional) Enter aDescriptionfor the Device.\nSelect theDevice Type(default type isOther).\nSelect theDevice Type(default type isOther).\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\n(Optional) Add applicableDevice Notes.\n(Optional) Add applicableDevice Notes.\nClickRegister New Devicewhen complete.\nClickRegister New Devicewhen complete.\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.OTAA (Over-The-Air Activation)\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.\nOTAA (Over-The-Air Activation)\nOTAA (Over-The-Air Activation)\n\nDevice Registration - ABP\nCustom ABP Registration\nIf the Device uses a custom Application Session Key, Network Session Key, and Device Address, use this registration method.\nEnter the EUI of the Device or obtain a Device EUI from Senet's EUI Registry.\nEnter the EUI of the Device or obtain a Device EUI from Senet's EUI Registry.\nEnter the custom Device Address address in theDevice Addressfield. Note: Only NetIDs of 0 or 1 are supported.\nEnter the custom Device Address address in theDevice Addressfield. Note: Only NetIDs of 0 or 1 are supported.\nEnter the custom Application Session Key in theApplication Session Keyfield.\nEnter the custom Application Session Key in theApplication Session Keyfield.\nEnter the custom Network Session Key in theNetwork Session Keyfield.\nEnter the custom Network Session Key in theNetwork Session Keyfield.\n(Optional) Enter aDescriptionfor the Device.\n(Optional) Enter aDescriptionfor the Device.\nSelect theDevice Type(default type isOther).\nSelect theDevice Type(default type isOther).\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\n(Optional) Add applicableDevice Notes.\n(Optional) Add applicableDevice Notes.\nClickRegister New Devicewhen complete.\nClickRegister New Devicewhen complete.\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.ABP (Activation By Personalization - Custom)\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.\nABP (Activation By Personalization - Custom)\nABP (Activation By Personalization - Custom)\n\nSenet ABP Registration\nSelect the Senet Allocated Join Information Checkbox to enable this registration mode. This will automatically generate the Device Address, Application Session Key, and Network Session Key for the Device.\nSelect the Senet Allocated Join Information Checkbox to enable this registration mode. This will automatically generate the Device Address, Application Session Key, and Network Session Key for the Device.\n(Optional) Enter aDescriptionfor the Device.\n(Optional) Enter aDescriptionfor the Device.\nSelect theDevice Type(default type isOther).\nSelect theDevice Type(default type isOther).\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\n(Optional) Add applicableDevice Notes.\n(Optional) Add applicableDevice Notes.\nClickRegister New Devicewhen complete.\nClickRegister New Devicewhen complete.\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.ABP (Activation By Personalization)\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.\nABP (Activation By Personalization)\nABP (Activation By Personalization)\n\nDevice Keys\nThe Application Key (AppKey) is an AES 128-bit key specific to a Device. The AppKey is used to derive the session keys (NwkSKey and AppSKey) used to encrypt and verify LoRaWAN™ communication and application data.\nOpen theEdit Devicewindow.Table View: Select a row in the Device table. Click on the edit button.Tile View: Click on the menu button. Click on the edit button.Device Details: Click on the edit button.\nOpen theEdit Devicewindow.\nTable View: Select a row in the Device table. Click on the edit button.\nTable View: Select a row in the Device table. Click on the edit button.\nTile View: Click on the menu button. Click on the edit button.\nTile View: Click on the menu button. Click on the edit button.\nDevice Details: Click on the edit button.\nDevice Details: Click on the edit button.\nClick on the Key buttonto display the Device keys.ABP (Activation By Personalization)OTAA (Over-The-Air Activation)\nClick on the Key buttonto display the Device keys.\nABP (Activation By Personalization)\nABP (Activation By Personalization)\n\nOTAA (Over-The-Air Activation)\nOTAA (Over-The-Air Activation)\n\nSenet Packet Format\nA straight-forward, network API for any End Device Application that utilizes LoRaWAN™ communication.\nDesigned to be extensible for End Devices with multiple sensors and variable application requirements. Each facet of operation has a corresponding packet type, and these in turn provide secure, ‘on demand’ access to the End Device via typed downlinks.\nOperational Status may be solicited:Battery LevelGeo-Location Data (future)RF TX & RX CharacteristicsFirmware & Hardware RevisionsBoot & Reset Event Counts with Reason Code\nBattery Level\nGeo-Location Data (future)\nRF TX & RX Characteristics\nFirmware & Hardware Revisions\nBoot & Reset Event Counts with Reason Code\nBehaviors may be controlled:Transmit IntervalChannel Plan toggle between 8 and 64-Channel operation (LoRaWAN™ shortcut)\nTransmit Interval\nChannel Plan toggle between 8 and 64-Channel operation (LoRaWAN™ shortcut)\n\nAll multi-byte words are encoded MSB..LSB (network-byte-order)\nVer [0..7]Senet Protocol Version: 1\nVer [0..7]\nPtype [8]Fragmented packet (fragment field present when set)\nPtype [8]\nPtype [9..15]Packet Type (128 values)\nPtype [9..15]\nFrag [16..31]Optional control field - present when bit [8] is 1\nFrag [16..31]\nType [0..7]Describes the type of value following (0..255)\nType [0..7]\nValue [8..23]The value described by Type (0..65535)\nValue [8..23]\n\nData Rate Reference Table:\n\nSenet also offers decoding of the app payload if the Device implements the standard Senet Packet Format. If the \"Supports Senet Packet\" box is checked on the Device Details Edit Dialog then the following optionalJSONfields will be appended to the message.\nFields\nDevice Configuration\nMultiTech xDot\nRegister the Device in the Portal by following theDevice Registrationprocedure.The Device EUI should be located on the Device. Look for characters in the format similar to:NODE: 0080000000XXXXXX\nRegister the Device in the Portal by following theDevice Registrationprocedure.\nThe Device EUI should be located on the Device. Look for characters in the format similar to:NODE: 0080000000XXXXXX\nNODE: 0080000000XXXXXX\nObtain the App key displayed at the end of the registration process.NoteThe App key is ONLY displayed during the registration process.\nObtain the App key displayed at the end of the registration process.\nNote\nThe App key is ONLY displayed during the registration process.\nConfigure the xDot Device to connect to the Senet Network with the following AT commands:Configure for Public Network\nAT+PN=1\n\nConfigure Frequency Sub-band (1:902.3-903.7, 2:903.9-905.3,..., 8:913.5-914.9)\nAT+FSB=1 (note: in areas where there are 64-channel GWs, better touseFSB=0)Setyour App EUItothe Senet Developer Application EUIAT+NI=0,00:25:0C:00:00:01:00:01SetApplicationKey(fromthe Developer Portal Device Setup window - thisisuniqueper Device)AT+NK=0,<APP-KEY>SettransmitdatarateAT+TXDR=10SettransmitpowerAT+TXP=20Setantenna gainAT+ANT=0SetOver-The-AirJoinmodeAT+NJM=1Save configurationAT&WViewconfigurationAT&VFornewer xDots, also needtoadd:SettheJoinDelayto5secondsAT+JD=5\nConfigure the xDot Device to connect to the Senet Network with the following AT commands:\nConfigure for Public Network\nAT+PN=1\n\nConfigure Frequency Sub-band (1:902.3-903.7, 2:903.9-905.3,..., 8:913.5-914.9)\nAT+FSB=1 (note: in areas where there are 64-channel GWs, better touseFSB=0)Setyour App EUItothe Senet Developer Application EUIAT+NI=0,00:25:0C:00:00:01:00:01SetApplicationKey(fromthe Developer Portal Device Setup window - thisisuniqueper Device)AT+NK=0,<APP-KEY>SettransmitdatarateAT+TXDR=10SettransmitpowerAT+TXP=20Setantenna gainAT+ANT=0SetOver-The-AirJoinmodeAT+NJM=1Save configurationAT&WViewconfigurationAT&VFornewer xDots, also needtoadd:SettheJoinDelayto5secondsAT+JD=5\nConfigure for Public Network\nAT+PN=1\n\nConfigure Frequency Sub-band (1:902.3-903.7, 2:903.9-905.3,..., 8:913.5-914.9)\nAT+FSB=1 (note: in areas where there are 64-channel GWs, better touseFSB=0)Setyour App EUItothe Senet Developer Application EUIAT+NI=0,00:25:0C:00:00:01:00:01SetApplicationKey(fromthe Developer Portal Device Setup window - thisisuniqueper Device)AT+NK=0,<APP-KEY>SettransmitdatarateAT+TXDR=10SettransmitpowerAT+TXP=20Setantenna gainAT+ANT=0SetOver-The-AirJoinmodeAT+NJM=1Save configurationAT&WViewconfigurationAT&VFornewer xDots, also needtoadd:SettheJoinDelayto5secondsAT+JD=5\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
241 },
242 {
243 "platform": "Senet",
244 "type": "docs",
245 "source": "https://docs.senetco.io/ap/appUsage/",
246 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nUsage & Accounting Data\nUsage Data and File Formats\nUsage Reports\nDevice Contracts\nUsage & Accounting Data\nAccounting data is kept for each Application and its Devices. This includes the number of Devices Activated, Joined and Deactivated; all Uplink and Downlink communication; as well as new Security Sessions. After being aggregated by Customer Contract ID, this data is used by the Billing and Rating process to generate invoices. The view below provides a summary of activity for Yesterday, Current Month, and Last Month.\n\nThe Usage Data statistics can be scoped to a specific contract by selecting it from the dropdown menu located in the navigation bar.\n\nField Descriptions\nUsage Data and File Formats\nOn the first of each month an Application Details file is generated for the prior month and made available for viewing/downloading. These contain detailed accounting information for Devices active during the previous month. |\nApplication Details File\nThe Application Details file includes network usage statistics for each Device associated with the application. The table below is an example of this usage file. The fields in the file are defined below. Device Service Metrics, (Metric A, B, and C) help characterize Device performance over the month.\n\nApplication Contracts File\nThe Contracts file includes aggregate usage statistics for all Contracts associated with the Application. The table below is an example of this usage file. The fields in the file are defined below.\n\nApplication Summary File\nThe Summary file includes aggregate usage statistics for all Devices associated with the Application. The table below is an example of this usage file. The fields in the file are defined below.\n\nUsage Reports\nUsage reports provide presentations of statistical trends in chart or table form. The reports are categorized by related statistics such as Devices in the Operational Summary, to provide strategic insight into the overall status of the Application.\nMessage Summary\nThe \"Message Summary\" shows a set of communication-specific charts for the Application. Each chart displays historical data for a given statistic. The time interval selection determines the aggregation period of the chart, e.g. Daily or Monthly.\n\nOnboarding Summary\nThe \"Onboarding Summary\" shows a set of charts for Devices that were added, removed, Activated, Deactivated or Registered to the Application. Each chart displays historical data for a given statistic. The time interval selection determines the aggregation period of the chart, e.g. Daily or Monthly.\n\nChecking the \"Show Combined Charts\" checkbox presents a consolidated view of the Onboarding Summary charts.\n\nOperational Summary\nThe \"Operational Summary\" shows a set of charts for Device communication activity or inactivity . Each chart displays historical data for a given statistic. The time interval selection determines the aggregation period of the chart, e.g. Daily or Monthly.\n\nChecking the \"Show Combined Charts\" checkbox presents a consolidated view of the Operational Summary charts.\n\nStacked Usage Charts\nFor those Applications with more than one Contract, selecting multiple items from the drop-down menu will update the Chart's bar columns by stacking discrete segments for each selected Contract. Whereas the default view aggregates data for all an Application's Contracts, the 'Select All' option displays the same data discretely. Tooltips for each segment in a stacked bar will reflect the corresponding Contract's value as well as the total combined value of the stacked bar. Note: the chart's display will not change for Applications with a single Contract.\nContract Multi-Select Menu\n\nDiscrete Contracts\n\nAggregated Contracts\n\nDiscrete Statistics and Contracts\n\nDevice Contracts\nA contract defines the billing rate and communications entitlement associated with a pool of Devices. When contracts are established, Contracts IDs are assigned by Senet and made available to associate in the Registration and Activation processes. Contracts are optionally assigned to Devices during the Registration Process, but it is mandatory to assign a contract during the Device Activation process. Once the Device has been Activated and has Joined the network a contract may only be updated by contactingSenet Support. When a Device is Activated it transitions to a billable state.\nThe panel below displays all of the available contracts that are associated with the Application Provider. These contracts are available to assign to your Devices during theRegistrationandActivationprocesses, the ID field maps to the contractId variable for use with the Registration/Activation API . The list of contracts is updated as new contracts are created for different engagements on the Senet Network.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
247 },
248 {
249 "platform": "Senet",
250 "type": "docs",
251 "source": "https://docs.senetco.io/ap/deviceDetails/",
252 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nDevice Details\nDevice Transactions\nDevice Map\nDevice RF Statistics\nDevice Statistics\nEstimated Location\nDetails Info Panel\nSend Downlink\nDevice Details\nThe Device Details view contains a series of sub-views that present Device centric transactional or location data. These views provide in-depth historical information that assists in troubleshooting Device behavior.\nTransactions:Display LoRa transactional events for the Device.\nMap:Displays the current location of a Device on a map.\nRF Statistics:Display RF information for the Device in heatmap form.\nStatistics:Display key LoRa transactional statistics for a Device.\nClick on a Device EUI to open the Device Details view.\n\nDevice Transactions\nThe Device Details Transactions view is a combined table and chart view that shows the communication events between the Device and the Network Server. The table shows the processed LoRa event data and the chart shows the statistics from those events over time. Events that are received late are specifically identified with light italicized text in the Time column.\nThe view can be filtered to specific event types or to communications involving specific Base Stations. The chart view will display the statistics from those filtered events and supports display of either one or two statistics at a time.\n\nHelium Hotspot ID:\nThe Device Event View can display the Hotspot ID that heard a Device connected to the Helium Network. This is displayed in the optional \"Origin\" column that can be enabled in the Table Settings. This column is hidden by default.\n\nPre-defined Filters:\nThe Transactions view has several pre-defined filters to help troubleshoot LoRa network issues. These filters are only applied to events loaded into the view.\nDate/Time Filtering:\nEvents can be filtered to those that occurred at a specific point in time using the Date/Time filter. Click thebutton to open the limit and Date/Time filtering options for the view.\nThe options popup has two modes, a row limiting mode and a Date/Time filter mode. The row limit mode is used to define the number of events that are returned from the server. Limiting the number of rows returned generally improves data processing performance.\n\nAs noted, the Date/Time filtering mode is used to filter events to a specific point in time. Selecting a date and time, determines the starting point for the events that will be returned. The Duration value determines the maximum amount of time from the specified start time that events will be returned.\nFor example, starting at 7 a.m. with a duration of 1 hour will return events that occurred between 7 a.m. and 8 a.m if \"Newer\" is selected. Otherwise if \"Older\" is selected, events from 7 a.m. to 6 a.m. will be returned. Since the number of events that occur within a specified timeframe is variable, the Max Rows value is used to further limit the returned data.\n\nAuto Refresh\nBy default, the Transactions view appends new events periodically every 30 seconds. This behavior is disabled when either a Date/Time filter is applied or the view is scrolled to a position other than the top of the table. Auto-refresh is re-enabled when either the view is refreshed or the view is scrolled back to the top.\nAn indication of the auto refresh status is displayed in the Transaction view's table footer as shown here:\n\nDevice Map\nThe Device Details Map view provides a location context for the Device. The position of the Device may be actual or estimated depending on GPS support or activation of the estimated location feature. Historical positional data may also be available if the Device model includes that data when communicating with the Network Server. Like the main Map view, the Device Details Map view supports display of detailed Device information in the Map.\n\nPath Quality information is also available:\n\nDevice RF Statistics\nThe RF Statistics view consists of three heatmap charts that show Uplink,SNR and RSSI statistics on a per-channel basis over time. The view supports daily or monthly aggregation of the data and supports navigation through time in 1 hour, 6 hour or 1 day increments.\n\nThe view also supports displaying the backing data in table format as shown here:\n\nDevice Statistics\nThe Device Statistics view shows historical charts of important Device data, such as PSR, Data Rate, RSSI, SNR and others. The view supports displaying the statistics in hourly, daily and lifetime timeframes.\n\nNote\nMAC Commands used for Up/Down counts: ADRParamSetup, DeviceTime, DevStatus, DlChannel, DutyCycle, LinkADR,LinkCheck, NewChannel, Rekey, Reset, RXParamSetup, RXTimingSetup, BeaconFreq,BeaconTiming, PingSlotFreq, PingSlotInfo, DeviceMod\nEstimated Location\nThe Estimated Location Map view is a diagnostic tool for evaluating the position of a Device based on different location algorithms. The algorithm used to determine location is configured in theDevice Profileassigned to the Device. This view is only visible if Write to Events is enabled in the Profile with the Advanced Algorithm selected. If visible, the Map displays a yellow circle for the estimated location and a green circle for the configured location (if set) as shown here:\n\nClicking on the yellow circle toggles display of square markers that represent the position of the Device for each unique uplink event received by the Network Server. This can also be accomplished via the \"Toggle Location History\" button in the upper righthand corner of the Map view. Hovering over a square displays a tooltip that shows the calculated location and time of the event.\n\nEstimated Location Tooltip Fields\nEstimated Location Confidence Examples\nDevice_A with a starting Confidence of 0An uplink for Device_A is heard by 1 Base StationThe confidence value is incremented by 1: Confidence is 1A new uplink for Device_A is heard by 2 Base StationsThe confidence value is incremented by 2: Confidence is 3\nAn uplink for Device_A is heard by 1 Base Station\nThe confidence value is incremented by 1: Confidence is 1\nA new uplink for Device_A is heard by 2 Base Stations\nThe confidence value is incremented by 2: Confidence is 3\nDevice_B with a starting Confidence of 10An uplink for Device_B is heard by 3 Base StationsThe confidence value is incremented by 3: Confidence is 13A new uplink for Device_B is heard by 2 Base StationsA reset trigger is detected, confidence is resetThe confidence value is incremented by 2: Confidence is 2\nAn uplink for Device_B is heard by 3 Base Stations\nThe confidence value is incremented by 3: Confidence is 13\nA new uplink for Device_B is heard by 2 Base Stations\nA reset trigger is detected, confidence is reset\nThe confidence value is incremented by 2: Confidence is 2\nDetails Info Panel\nProvides Device metadata and an interface for sending downlinks to a Device.\nClickto hide.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\n\nMulticast Group Status\nThe status of a Device that is in a Multicast Group is also displayed in the info panel.\nSend Downlink\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n platform allows message data to be delivered to a specified Databin ID. Once the data has been delivered to Wolfram it can be easily configured for computation, visualization, analysis, querying, or other operations.Messages will forwarded inJSONformat (SeeDefault Data Fields).\nPlatform Setup\nFrom the Wolfram DataDrop platform click on \"My Databins\" and then click on the \"Create a Databin\" button.\n\nClick on the edit icon next to \"Unnamed\", give your databin a name. Take note of the Databin ID.\n\nNotifier Setup\nSelect the Wolfram DatadropNotification Targetand specify the Databin ID that you created for this device.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
259 },
260 {
261 "platform": "Senet",
262 "type": "docs",
263 "source": "https://docs.senetco.io/ap/alerts/#application-alerts",
264 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nAlerts\nClearing Alerts\nDisabling Alerts\nBase Station Maintenance Mode\nAlert Email Notifications\nRegistration Token Expiring Alerts\nApplication Alerts\nApplication Alert Statistics\nAlerts\nAlerts provide a targeted view into the network, highlighting conditions of interest or concern and reflecting Senet's operational assessment and response activity. For example, Base Station connectivity loss or high CPU utilization, as well as Application transaction threshold events.\n\nUsing the Alert Status selection control, the table can be filtered to explore past and regularly occurring events.\n\nClearing Alerts\nAlerts can be cleared at any time through the Alerts table, this will move the Alert to Cleared state and allow the input of a clearing reason. To perform a clear on a single or multiple Alerts, simply select each Alert row by clicking on the status. Once they are selected click thebutton and provide the reason for clearing the Alert.\n\nWhen finished, click OK and the alert will be cleared.\nNote\nThis doesn't stop the Alert from reoccurring but subsequent occurrences of the same Alert will be raised as new Alerts.\nDisabling Alerts\nAlerts can be temporarily disabled directly from the Alerts table. Select one or more Alerts from the table and click thebutton to disable them.\nClick Yes in the confirmation dialog to complete the action.\n\nBase Station Maintenance Mode\nThe Admin Status of a Base Station can be set to Maintenance directly from the Alerts table. A Base Station with this status will not generate Alerts and will not be visible in the Map. Select one or more Alert(s) from the table and click thebutton to set the the status.\nClick Yes in the confirmation dialog to complete the action.\n\nAlert Email Notifications\nWhen an alert is raised, an email notification is sent to the configured Customer email address indicating that the alert failure has occurred. The list of recipients for this email list is configured and managed by the Network Operator.\nRegistration Token Expiring Alerts\nRegistration Token Expiring Alerts are designed to notify the user when aDevice Management Registration tokenhas or will soon expire. By default this alert will warn the user that it will expire two weeks before the expiration date. This alert will automatically clear when a new token is generated.\nApplication Alerts\nApplication alerts provide insight into the health of north-bound traffic forwarded to an IoT provider. Frequent alerts may indicate that there is a communication issue present that requires attention.\nApplication Alert Statistics\nThe Application Alert Statistics table shows statistics for the number of alerts raised in the last hour, the last day and the last week for each managed Application.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
265 },
266 {
267 "platform": "Senet",
268 "type": "docs",
269 "source": "https://docs.senetco.io/dev/streaming/Geckoboard/",
270 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nGeckoboard\nPlatform Setup\nNotifier Setup\nGeckoboard\nGeckoboard (http://www.geckoboard.com) allows you to create dashboards for large sets of data. These dashboards are comprised of various widgets, each displaying your data in a particular way. The Geckoboard notifier supports two of these widgets: theNumber & Secondary Statswidget and theData Setwidget. The type is set in the edit dialog of the Geckoboard notifier via theWidget Typedropdown.\nPlatform Setup\nNumber & Secondary Stats\nThis widget is designed to display a single value and compare that value to the secondary stat.\nFor more information this type of widget see Geckboard's documentation at:Number-and-Secondary-Stat\nThe Value field of each of these is theJSONkey of the given data point you wish to display.NOTE:This key should be lower case since Geckoboard only supportsJSONkeys with lower case values.\nClick on Add Widget and on the subsequent screen, select Custom Widgets. From this collection you can select theNumber & Secondary Statwidget. Ensure it is set to the push method.\n\nAfter the Number & Secondary widget appears in the dashboard, hover the mouse on the icon and select the 3 dots on the bottom right corner. This will allow you to edit the widget to see the Widget Key, you will need to enter the Widget Key and the API Key related to your account into the Notification Target.\n\nData Set\nThe Data Set is designed to replace the current widgets by making it so users can characterize the incoming data. This makes it so you can create any type of widget from a dataset. Creating a dataset is relatively straight forward, a dataset is designed to mapJSONkeys to what their value represents. More details are available here:API Reference.\nTo create data sets you need to define the exact fields that appear in the data set by specifying them in a curl command.\nExample:\ncurlhttps://api.geckoboard.com/datasets/testpackets3 \\\n -X PUT \\\n -u '(API Key): ' \\\n -H 'Content-Type: application/json' \\\n -d '{\"fields\":{\"gweui\":{\"type\":\"string\",\"name\":\"Gateway\",\"optional\":false},\"rssi\":{\"type\":\"number\",\"name\":\"RSSI\",\"optional\":false},\"snr\":{\"type\":\"number\",\"name\":\"SNR\",\"optional\":false},\"datarate\":{\"type\":\"number\",\"name\":\"DataRate\",\"optional\":false},\"freq\":{\"type\":\"number\",\"name\":\"Frequency\",\"optional\":false},\"timestamp\":{\"type\":\"datetime\",\"name\":\"Date\"}\n },\"unique_by\":[\"gweui\"]\n }'\ncurlhttps://api.geckoboard.com/datasets/testpackets3 \\\n -X PUT \\\n -u '(API Key): ' \\\n -H 'Content-Type: application/json' \\\n -d '{\"fields\":{\"gweui\":{\"type\":\"string\",\"name\":\"Gateway\",\"optional\":false},\"rssi\":{\"type\":\"number\",\"name\":\"RSSI\",\"optional\":false},\"snr\":{\"type\":\"number\",\"name\":\"SNR\",\"optional\":false},\"datarate\":{\"type\":\"number\",\"name\":\"DataRate\",\"optional\":false},\"freq\":{\"type\":\"number\",\"name\":\"Frequency\",\"optional\":false},\"timestamp\":{\"type\":\"datetime\",\"name\":\"Date\"}\n },\"unique_by\":[\"gweui\"]\n }'\nThe key for each index is the exact key that exists in theJSONthat is passed to Geckoboard.\nTo create the widget, simply select the dataset that you just created via curl in the add widget menu.\nSelect your dataset you are updating and customize which widget you want to display the data.\nDatasets will save the data long term and will allow you to graph historical data.\n\nNotifier Setup\nSpecify the API Key and Widget Key into the providedNotification Targetfields.\nFor a Widget Type of Stats, specify the Text and Value fields as necessary.\nFor a Widget Type of Data Set, specify the Dataset ID.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
271 },
272 {
273 "platform": "Senet",
274 "type": "docs",
275 "source": "https://docs.senetco.io/rp/index.html",
276 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nRAN Provider Documentation\nGetting Started\nUser Interface\nRAN Provider Documentation\nRegister and manage LoRaWAN Base Stations on the Senet Network. RAN (Radio Access Network) Provider Base Stations generate revenue based on the number of qualified messages that used the Radio Access Network.\nGetting Started\nLearn how toRegister a Base Station.\nLearn how toRegister a Base Station.\nLearn how toInstall the Senet Packet Forwarder.\nLearn how toInstall the Senet Packet Forwarder.\nLearn how toCustomize and Navigate the Dashboard.\nLearn how toCustomize and Navigate the Dashboard.\nUser Interface\nBase Stations\nThe main landing page will allow a RAN provider to provision and deploy their own RAN provided Base Stations. When a new Base Station is registered to the network the RAN provider can modify Base Station's channel plan, view Base Station details, RF statistics, performance, and much more.\nBase Station Details Summary\nIn Details Summary view a RAN provider is able to view number of heard devices, transactions, Ethernet/Cell stats, network round trip time, and CPU/Memory statistics over the course of a given time period. The RAN provider is also able to view uptime and other critical statistics to monitor the Base Station's health over time.\nBase Station Events\nThe events view helps a RAN provider view the traffic and device's that are flowing through their Base Station. These events show a devices EUI, RF statistics and other important information.\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nBase Station RF Statistics\nIf you are looking for RF statistics, this view will show you the Base Station receive and transmit statistics over time with a heat map for all channels and frequencies.\nBase Station Stats\nThe Statistics page shows how a Base Station is performing over a daily, monthly or lifetime with view in to uplinks, downlinks (both foreign and local), average transaction and average device counts.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
277 },
278 {
279 "platform": "Senet",
280 "type": "docs",
281 "source": "https://docs.senetco.io/dev/streaming/AZURE/",
282 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nMicrosoft Azure IoT Hub\nPlatform Setup\nNotifier Setup\nMicrosoft Azure IoT Hub\nIoT Hub is a Microsoft Azure (azure.microsoft.com) service used to connect, monitor and control IoT assets. Devices created through the IoT Hub can receive data forwarded from nodes on the Senet Network. Using the Senet Portal, select Azure IoT Hub as the forwarding option for your node. Submit your device specific connection URL and the SAS (Shared Access Signature) generated for your device.\nSenet will forward messages inJSONformat (SeeDefault Data Fields).\nPlatform Setup\nLogin to your Microsoft Azure Account and add IoT Hub from the Marketplace. Select the IoT Hub and press the Create button.\nLocate and copy your connection string.\nDownload the Microsoft Azure Device Explorer Application.\nhttps://github.com/Azure/azure-iot-explorer/releases\nOpen the Device Explorer, paste the Connection String in the text box and click the Update button.\nClick on the Management tab and click the Create button to add a new device. Click the SAS Token button to generate an SAS Token.\nNOTE:When copying the SAS from the Device Explorer, copy everything after \"SharedAccessSignature=\". Also\nmake sure to set a Time To Live (TTL) in the SAS Token window, otherwise the connection will only last a couple minutes.\n\nDetermine your device specific connection URL.\nhttps://{hostname}.azure-devices.net/devices/{deviceId}/messages/events?api-version=2016-02-03\nhttps://{hostname}.azure-devices.net/devices/{deviceId}/messages/events?api-version=2016-02-03\nThe {deviceId} is the Device Id in the Device Explorer.\nThe {hostname} can be found in the IoTHub Overview.\nNotifier Setup\nAdd the URL and generated SAS token to theNotification Targetfields.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
283 },
284 {
285 "platform": "Senet",
286 "type": "docs",
287 "source": "https://docs.senetco.io/dev/streaming/Scriptr/",
288 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nScriptr\nPlatform Setup\nNotifier Setup\nScriptr\nScriptr.io (http://scriptr.io) is a very powerful cloud service to run your server-side code. With scriptr.io, you use scripts to create the custom back-end APIs needed to power your Internet of Things (IoT) and other projects. scriptr.io allows you to get productive quickly by providing an integrated web-based environment for developing, running and debugging your code. \nMessages will be forwarded inJSONformat (SeeDefault Data Fields).\nPlatform Setup\nTo get started with scriptr create a new script and click on the Set Name link to give the URL endpoint a unique name.\n\nCreate your custom script and press the save button.\nGo to your account settings and copy the Token to be entered as the Authorization Token in the Notification Target field.\n\nNotifier Setup\nSpecify the endpoint URL and Authorization Token into the providedNotification Targetfields.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
289 },
290 {
291 "platform": "Senet",
292 "type": "docs",
293 "source": "https://docs.senetco.io/dev/gw/",
294 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nGateway Software\nGateways provide the wireless network access for the End Devices, relaying data to and from the Senet Network Server via IP backhaul (Ethernet, Wi-Fi, 3 or 4 G cellular or satellite). As part of relaying data from End Devices, Gateways include RF meta-data about the data’s reception characteristics. The Network Server in turn leverages this information in real time to optimize the End Device.\nGateways are deployed to meet application, geographical, and End Device density coverage requirements. Coverage depends on topology characteristics and varies among rural, suburban, and urban environments. To meet these various needs, Gateways are available in a variety of sizes and may be deployed to provide indoor and outdoor coverage.\nIn order to integrate your Gateway with Senet's Network, it must be on-boarded. This process involves:\nRegistration and subsequent approval from Senet.Developer Gateway RegistrationRAN Provider and Operator Base Station Registration\nDeveloper Gateway Registration\nRAN Provider and Operator Base Station Registration\nInstallation & configuration of a supported LoRa Packet Forwarder.\nOnce approval is received your Gateway's packet forwarder will communicate with Senet's network. The level of security depends on the packet forwarder implementation. Currently Senet supports the following Packet Forwarder options:\nSupported Packet Forwarder Options\nNote\nAll Gateway types and supported packet forwarding options are capable of enrolling in theSenet LVN!\nSenet Packet Forwarder\nSupported Senet PF Gateways\nSemtech Basics Station\nVerified Semtech BS Gateways\nSemtech Packet Forwarder\nVerified Semtech PF Gateways\nThe most reliable and feature rich PF option when available\nSecure end-to-end device communication\nFully remote management and monitoring supported by the Network Server\nOperates securely by default with no opt-out for long term stability and peace of mind\nRemote channel plan configuration through the Network Server\nSupports traffic filtering at the Gateway\nFulfils all tasks related to basic packet forwarding functionality for LoRaWAN\nSenet recommended TLS Secured mode increases security\nLimited channel plan configuration through the Network Server\nWidely supported by many vendors\nTraffic filtering is not supported\nSupported legacy option when neither Senet PF or Semtech BS are available\nUnsecured UDP communication\nManual channel plan configuration through the Gateway\nTraffic filtering is not supported\nCustomer Support\nContact a Senet IoT expert\nSemtech BS\nGeneric Configuration\nSemtech PF\nGeneric Configuration\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
295 },
296 {
297 "platform": "Senet",
298 "type": "docs",
299 "source": "https://docs.senetco.io/dev/index.html",
300 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nDeveloper Documentation\nDashboard\nDevice Details\nEdit Device\nGateway Details\nEdit Gateway\nDelete Gateway\nDeveloper Documentation\nIoT development for the Senet Network\n\nJoin the Community\nUse theSenet Communityto ask question, read articles, talk to Senet employees and other Portal users.\nDashboard\nThe Dashboard is the main view of the Portal. Users can connect their Devices and Gateways to the Senet Network through a simple registration process. The Dashboard displays high level statistics and RF data to help users monitor their equipment.\nCustomize the Dashboard\nClick on the gearin the top-right corner.\nOptions are displayed to choose a view and toggle Dashboard features.\n\nNote\nWhen the Tile View is selected, theTile Sortingoptions are displayed at the bottom of the Dashboard Settings. When the Table View is selected, rows can be sorted by clicking on the column headers.\nTile View\nChoose theTile Viewin theDashboard Settingsto display each Devices or Gateways in a tile. The tiles show network and configuration data along with a graph to display transaction and RF statistics.\n\nClick on the plus iconabove the tiles to open the registration window shown below.\n\nClick on the Device image to register a Device or the Gateway image to register a Gateway. See theDevice Registrationdocumentation orGateway Registrationdocumentation for step-by-step instructions.\nClick on the menu buttonin the top right corner of the tile. Click on the delete buttonto remove the Device or Gateway. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\n\nTable View\nChoose theTable Viewin theDashboard Settingsto display the Devices and Gateways in separate tables.\n\nClick on the register buttonabove the Device or Gateway table to open the respective registration window. See theDevice Registrationdocumentation or theGateway Registrationdocumentation for step-by-step instructions.\nClick on a row to select a Device or Gateway. Click on the delete buttonto remove the selected item. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\nThere are two options provided for deleting a Device:\nDelete the Device from the Network.\nDelete the Device from the Account only.\nDeleting the Device from the Network removes the Device from the NMS completely. It will not be able to communicate on the Senet Network following the deletion.\nDeleting the Device from the Account leaves the Device in an active state on the Network, but removes it from display in the Developer view. Deleting a Device from an Account also removes any Device specific Notification Targets. Data from the Device will not be forwarded until it is associated with a new Account and Notification Target.\n\nNetwork Delete\n\nAccount Delete\n\nDevice Details\nClick on a Device EUI or Device image in the dashboard to open theDevice Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above allows users to edit their Device, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open theEdit Devicewindow\nSend Downlink\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\nEdit Device\nEdit the Device description, type and notes in the DETAILS tab.\n\nEdit the Device latitude and longitude in the LOCATION tab.\n\nEdit theNotification Targetin the NOTIFICATION TARGET tab.\n\nSelect LoRaWAN Device settings can be overriden in the DEVICE PROFILE tab. These configure the behavior of the Device on the network and do not normally need to be changed. Accordingly, this tab is not visible by default. Check the Device Profile checkbox on the DETAILS tab to display this tab.\n\nThe following table contains the list of LoRaWAN settings that can be set in this tab:\nGateway Details\nClick on a Gateway EUI or Gateway image in the Dashboard to open theGateway Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above displays information and statistics about the Gateway. Click on thebutton to minimize.\nEdit Gateway\nEdit the Gateway installation information.\n\nDelete Gateway\nClick thebutton in the table view or thebutton in the tile view to remove the Gateway. A dialog is shown to confirm the delete request. The dialog includes a checkbox to indicate that the Gateway should also be permanently removed from the network. If the box is not checked, only the user's association to the Gateway is removed.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
301 },
302 {
303 "platform": "Senet",
304 "type": "docs",
305 "source": "https://docs.senetco.io/dev/streaming/Murano/",
306 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nMurano by Exosite\nPlatform Setup\nNotifier Setup\nMurano by Exosite\nThis set up only supports legacy exosite accounts. Murano is Exosite’s (https://www.exosite.com/murano-iot-platform) second-generation IoT Platform, it is a powerful tool that allow for examination and graphing of message data. It has the ability to pull values fromJSONdata to visualize those values in a number of ways in the Exosite Dashboard.\nMessages will be forwarded inJSONformat (SeeDefault Data Fields), so create the new Resource with the Data format of type \"string\".\nPlatform Setup\nTo get started you must create a Product (Product Id) and add a Device (Name and Identity) to that product.You must also create a Device Resource (Alias) for the data that will be sent to Exosite.\nThe Device must also be Activated and a Client Identifier Key (CIK) must be generated using the following curl command (See Exosite's Provisioning Api for more details).\nLogin to the Exosite Platform and create a new product.\nClick on the product name to display theproduct id.Create a new Device and give the Device an identity.Activate the Device and generate aCIKusing curl.\ncurl -k https://<productid>.m2.exosite.com/provision/activate \\\n -H'Content-Type: application/x-www-form-urlencoded; charset=utf-8'\\-d'vendor=<productid>&model=<productid>&sn=<identity>'\ncurl -k https://<productid>.m2.exosite.com/provision/activate \\\n -H'Content-Type: application/x-www-form-urlencoded; charset=utf-8'\\-d'vendor=<productid>&model=<productid>&sn=<identity>'\nClick on the Device and create a new resourcealias.\nNotifier Setup\nSpecify the Product Id, Alias, and CIK into the providedNotification Targetfields.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
307 },
308 {
309 "platform": "Senet",
310 "type": "docs",
311 "source": "https://docs.senetco.io/docs/releases/",
312 "content": "Home\nFAQGeneral FAQDevice FAQGateway FAQ\nGeneral FAQ\nDevice FAQ\nGateway FAQ\nReleases\nRelease Notes\nInformation on key features and changes made to the Portal are found here. Preliminary release notes, when listed, are for features and changes planned for the next release.\nJanuary 2025 - Release Notes\nApplication Providers\nAdded the ability to create Device Profiles that are shared between Applications owned by the same Account.\nAddressed an issue with the Device Update API that prevented a tag from being removed.\nEnhanced the Device Update API to allow a devClass value of \"A,B,C\" or \"CLASS_A ,CLASS_B, CLASS_C\".\nAddressed an issue where some UTF-8 characters could not be included when searching in the UI\nUpdated the data export values for Device Battery level to prevent display of Unsupported HTML.\nAddressed an issue in the Device Profiles view where the Channel Mask could not be updated.\nRAN Providers\nAdded support for Gemtek Base Stations with a 14 digit serial number.\nUpdated the SerialNumber validation for Kerlink Base Stations to require \"0x\" followed by the last 8 digits of the EUI.\nAddressed an issue where the Base Station status icon was not reflecting the correct/current status.\nAddressed an issue in the Base Station table where some Alert Level and Alert Profile values were not displayed correctly.\nAddressed an issue where Semtech Packet Forwarders would not get an updated Last Contacted time in the UI.\nUpdated the System Events view so that \"Join Errors\" Filter will include Join Disabled events.\nLoRaWAN\nAdded support to reinitialize a Device's channels when it rejects an ADR request to set the channel mask.\nAdded the ability for the LNS to check the wild card server for devices even if the specific Join Server is modeled in the LNS.\nApplication & RAN Providers\nAdded support for a new AS923 Channel Plan to be used in Indonesia.\nAdded support for additional EU868 Channel Plans\nSeptember 2024 - Release Notes\nApplication Providers\nAdded the ability to retrieve queued downlinks for a Device.\nAdded the ability to search for a Device Registration across multiple Join Server registration tables.\nAdded the ability to see the Device Registration state to know if it has been Activated.\nUpdated Notifier payload to include the ‘batteryLevel’ field when enabled in the Device Profile.\nAdded the ability to display the Device Session Keys on the Device Details View.\nUpdated the Device Onboarding process to allow for Device Registration and Activation to be performed in a single action.\nUpdated the Device Onboarding process to allow for the setting of the LoRaWAN Device Class during Device Registration.\nRAN Providers\nAdded a new System Event to track when a downlink failed due to duty cycle limits.\nAdded the ability to disable Class B Beacons on Basic Stations.\nAdded new EU868 frequency plan: 867.1 ; 867.3 ; 867.5 ; 867.9 ; 868.1 ; 868.3 ; 868.5 ; 868.9.\nLoRaWAN\nAddressed an issue with handling PRStartAns in LoRa Roaming API.\nAdded an enhancement to clear the configured channels for ABP devices that reset, in order to ensure they are properly reconfigured.\nAdded support for DevStatusReq for periodic battery updates.\nAddressed an issue where some Acknowledged Uplinks would be detected to have corrupt MICs.\nAddressed an issue where responses to ADRAckReq=true were being sent only on RX2.\nAdded support for string-based session IDs when dealing with session keys for Devices.\nAdded the ability to cancel a FUOTA request.\nLimited the NewChannelReq to 3 downlink attempts per device, in order to best handle devices with poor RF or non-compliant firmware.\nApplication & RAN Providers\nAdded the ability for Operators to configure Alert Notifications and Case Notifications on separate email lists for Application and RAN Providers.\nJanuary 2024 - Release Notes\nApplication Providers\nAdded the ability to update AppKey for a Registered Device.\nLoRaWAN\nUpdated ADR engine to send Channel Plan for devices that received a CFList in the JoinAccept to reinforce the Channel Configuration.\nAdded ability to communicate the channel configuration to Devices with ADR disabled.\nAdded the ability to enable/disable FUOTA for an Application.\nEnhanced Class B downlinks to use the \"Set Alternate RX2 Params\" to specify the second Class B downlink window.\nMarch 2023 - Release Notes\nApplication Providers\nAdded support for configuration of Estimated Location calculation in the Device Profile dialog.\nAdded the ability to display the Helium Hotspot ID in the Device Events view.\nLoRaWAN\nEnhanced the FUOTA Transfer view to include the count of Devices in the Complete, Ready, Initializing, or Error state.\nUpdated the Device Details view to include Multicast and FUOTA session information.\nAdded a Multicast Groups table and Details panels to allow for monitoring Multicast Groups.\nAddressed an issue where the total transport time for a FUOTA image was not calculated correctly when a restrictive duty cycle is in use.\nAddressed a Fragmentation Session issue which caused the LNS to not respond to FragAuthReq messages.\nUpdated the DeviceTimeAns response to reference LNS NWK time.\nNovember 2022 - Release Notes\nApplication Providers\nAdded the ability to register Devices for any Join EUI. Note: The Join EUI must not have been previously configured on the Network Server.\nUpdated the Application Dashboard Tooltips to display combined statistics for each chart when \"All Contracts\" is selected.\nAdded Helium ADR configuration controls to the Device Profile Edit dialog.\nAdded columns to the Device Profile table to display the current Helium ADR configurations.\nRAN Providers\nUpdated Map feature to include a filter for Base Station Admin Status.\nAdded support for a RAN Provider Dashboard which displays historical data for Admin Status, Connection Status, and Model Type.\nUpdated Base Station Details API to include the most recent Alert information in the return data.\nAdded a Notes field to the Base Station Edit dialog which allows for tracking custom information per Base Station.\nLoRaWAN\nAddressed an issue where a FUOTA transfer could be delayed waiting for another transfer to finish.\nAddressed an issue where the FUOTA Transfer Status was not updated.\nAdded the ability to specify Transmit Channel as a Channel ID or a Frequency when initiating a FUOTA Transfer or a Multicast Group setup via API.\nAddressed an issue where the Fragmentation Version override from the UI was not being used for a FUOTA session.\nDevelopers & Application Providers\nAdded pre-defined notifier for the Qubitro IoT Platform.\nAdded pre-defined notifier for the Losant IoT Platform.\nAugust 2022 - Release Notes\nApplication Providers\nUpdated Application Notifier Create/Edit controls to only allow modification by Admin users.\nAdded the ability to include an Application's EUI in its associated Notifiers messages.\nImproved behavior of the Device Profile Channel Mask editor.\nAdded support for generating a Registration Token from the Applications table.\nAdded support for editing parameters associated with an Application's configuration.\nUpdated Registration Token Expiration Alerts to no longer evaluate for short-lived Tokens.\nAddressed an issue displaying public Join Server names in the Application dropdown selector.\nAddressed an issue where Device Transfer results did not correctly reflect errors that occurred.\nRAN Providers\nUpdated Map and Path Quality workflows to show owned Base Stations when Admin Status is one of \"In Service\", \"Maintenance\", or \"Not in Service\".\nUpdated the LNS to transition the Admin Status of Base Stations that are offline for an extended period. Base Stations offline for 7 days are transitioned to \"Maintenance\" and those offline for 14 days are transitioned to \"Not In Service\". The account owner will be emailed one day prior to the transition.\nUpdated Base Station provisioning and edit workflows to enforce a recommended radius based on a Base Station's model and deployment height.\nAddressed an issue that prevented the Base Station API from completing requests.\nAddressed an issue where the LNS was reporting an incorrect IP address of Base Stations.\nAddressed an issue in the Devices Table within the Base Station Details View where 0 SNR values were rendered incorrectly.\nLoRaWAN\nUpdated the Developer Portal to allow Device Registration with a Join EUI of \"0000000000000000\".\nEnhanced Device Event Details content for both Multicast Application and LoRaWAN MAC Command responses to indicate ACK or NACK.\nAddressed an issue where Multicast group configuration was attempted after being NACKed by a Device.\nImproved clarity of Multicast API results when adding Devices to groups and deleting groups.\nAddressed an issue for ADR-disabled Devices joining the Network in regions with dynamic channel plans that employ the CFList (e.g., EU, AS, or India).\nAdded support for Cote d'Ivoire Channel Plan 868.1 - 869.5 .\nDevelopers\nAddressed an issue where a Device's Profile assignment was reset to defaults.\nOperator\nAddressed an issue where Device Events did not display the names of some Base Stations.\nJune 2022 - Release Notes\nApplication Providers\nUpdated the Device Events view to maintain row selection when scrolling horizontally.\nAdded support for editing an Application's Description.\nAdded a new UI workflow to transfer Devices between Customer accounts. Requirements include API keys associated with both the source and destination Applications as well as a common Join Server.\nAdded the ability to onboard Devices using Senet's pre-defined Public Join Servers. Additionally, the control's layout and filtering capability were improved.\nImproved the Device Update workflow to allow appKey and nwkKey changes for Devices that have never joined the Network.\nUpdated the Map's Device Statistics header to allow toggling visibility of groups of Device markers by clicking individual legend-labels of the active statistic chart.\nAddressed an issue where some Join Errors were not displayed in the Base Station Details Events view.\nUpdated the Device Details Map to display estimated location using data sourced solely from Helium Hotspots.\nRAN Providers\nAdded Base Station drill-down charts to the Device, Transaction, and Availability Trend Reports. Once a Base Station row is selected, clicking the new \"Trend Chart\" toolbar button launches a dialog displaying the historical data as a line or stacked area chart.\nAddressed an issue where the Device (1d) chart in the Base Station Details Summary view would show data for the current day.\nLoRaWAN\nUpdated the Device Profile create/edit dialog with an improved control for editing channel masks.\nUpdated the Device Profile's 'Deduplication Delay' setting to be derived as a percentage of the Profile's 'RX1 Delay' setting. This will improve downlink success for devices heard by Base Stations with longer round-trip times (RTT), requiring a non-default RX1 Delay.\nDevelopers\nUpdated the Device Registration workflow to accept custom Join Server and Application Key data by default.\nUpdated the Device Edit dialog to allow overriding a non-default Device Profile.\nAddressed an issue where the Location link in Device Details Info Panel did not open the Map view.\nApril 2022 - Release Notes\nApplication Providers\nUpdated calculation of a Device's Estimated Location to utilize the location of Helium Hotspots.\nAdded Device Type, Location, and Join Server EUI fields to the Device Details information panel.\nUpdated the Device Management Join Server menu selection to include Server names.\nAdded Application and Join Server EUI confirmation fields to the Device onboarding dialog to ensure devices are correctly registered.\nUpdated the Device Onboarding process to allow duplicate Application Keys. Included a warning indicating non-unique keys are a security issue.\nUpdated the Device Onboarding process to prevent duplicate Device Registrations.\nAdded support for Device Profiles, which allow customization and management of a Device's LoRaWAN settings.\nAddressed an issue where the Application Dashboard could show data for the incorrect time range.\nAddressed an issue with the Application Dashboard where the displayed data did not always align with the timeframe selected.\nUpdated the Device Management API to require that a Device be Deactivated before changing its Contract.\nUpdated the Device Management API to prevent a Deactivated Device from being Deactivated again.\nApplication Providers & RAN Providers\nAddressed an export issue with Planning Maps.\nUpdated Helium Coverage Overlay to include all Hotspots Worldwide.\nUpdated Planning Maps and On-Demand Path Quality to include all Helium Hotspots Worldwide.\nRAN Providers\nUpdated the Base Station Backhaul chart to report Error and Drop statistics separately.\nUpdated the Cellular Configuration workflow to support Base Stations only connected through cellular. [Requires Bstn 2.20+]\nLoRaWAN\nUpdated the FUOTA engine to use non-zero Multicast Group IDs to support Devices participating in multiple groups.\nUpdated Downlink behavior to fail immediately when a requested Downlink PDU exceeds LoRaWAN specifications.\nAddressed an issue where FUOTA session timeout was not correctly calculated.\nUpdated the FUOTA engine to accommodate Devices that do not support the Application Layer Clock Synchronization specification.\nAll Users\nUpdated views throughout the application to include URL parameters, allowing for easy sharing of links to specific views.\nAdded context-sensitive browser tab titles for easier browser tab management.\nDevelopers\nUpdated Device Edit workflow to provide an optional Device Profile configuration, allowing customization of LoRaWAN settings.\nFebruary 2022 - Release Notes\nApplication Providers\nUpdated Device Tag Management to allow multiple tags to be deleted.\nAddressed an issue where tags could not be removed from a Device.\nUpdated the Device Transactions view to hide the Application Payload field when the data is encrypted.\nApplication & RAN Providers\nAdded Helium Coverage information to all Path Quality workflows.\nAdded a Helium Hotspot map layer\nAdded a Senet LVN Coverage map layer\nAdded a column to the Mote Map table view for Device Data Rate.\nRAN Providers\nAdded the ability to export the Channel Configuration from the Base Station Integration API.\nUpdated the Base Station registration dialog to display help text when an invalid Serial Number has been detected.\nLoRaWAN\nAdded support for Dynamic Multicast Groups for Devices that support the LoRa Alliance TS005: Remote Multicast Group V1.0 & V2.0 Specifications.\nAdded support for the LoRa Alliance Backend Interface Specification version 1.1.\nUpdated the Unique Uplink filters in Device LoRa Event views to exclude retransmitted events.\nAddressed an issue where late uplinks cause a suboptimal Gateway to be used for downlinks.\nDevelopers\nAddressed an issue with deleting Devices.\nNovember 2021 - Release Notes\nApplication Providers\nUpdated the Application Dashboard to display statistics by Contract for Uplinks, Downlinks, Join Success, and Join Errors.\nAdded the ability to optionally forward Layer-2 Uplinks to an Application Provider.\nUpdated the Usage Files View in Application Details to always be visible.\nUpdated the MQTT Notifier configuration to allow for a Broker Address length up to 255 characters.\nUpdated Notifier payload to include the ‘ismBand’ and ‘maxPayload’ fields as part of the ‘RF Data’ option.\nUpdated AWS API Gateway Notifier support to include all data fields available to HTTP Notifiers.\nApplication Providers & RAN Providers\nAdded Helium Hotspot information to on-demand Path Quality calculations in the Map.\nRAN Providers\nImproved the formatting of the Base Station Details Backhaul Info panel to organize content by Interface.\nUpdated the Base Station Provisioning workflow and API to remove the Base Station Classification field. If this field is included, it will be ignored.\nAddressed issues with the Base Station Replacement workflow.\nUpdated the Base Station Details Connection Information popup and icons to display the current, active Interfaces.\nAddressed an issue where Case Status was not updated correctly.\nLoRaWAN\nEnhanced FUOTA support to parse and display downlinked commands from the Firmware Management, Multi Package, Application Clock Sync, Fragmented Data Block Transport, and Remote Multicast packages.\nAdded FUOTA support for LoRaWAN v1.1 devices.\nAdded FUOTA support for external handling of Firmware Management package.\nAdded support for AS923-4 Region.\nAdded support for the LoRaWAN v1.1 MAC commands: ResetInd, ResetConf, RekeyInd, and RekeyConf.\nAdded a new Split Channel Plan for US915 Region that includes channels 4 through 11. Currently supported with the Senet Packet Forwarder on MultiTech, Tektelic, and Ezurio (Laird) Base Stations.\nEnhanced the ADR Engine to optionally allow Uplinks from the Helium Network to influence ADR decisions.\nAddressed an issue where new Security Session Keys were not used to encrypt Application payload for downlinks queued during the previous session.\nAugust 2021 - Release Notes\nApplication Providers\nAdded a selector to the Device Search boxes that scopes the search to the selected column.\nRAN Providers\nUpdated the Base Station provisioning process to allow configuration of 'Admin Status'.\nUpdated Base Station location column to display the Base Station's state field when available.\nAdded the ability to create new Cases from the Alerts Table.\nUpdated the Alerts Table with new buttons to quickly disable Alerts for a Base Station and set a Base Station's 'Admin Status' to Maintenance.\nAdded the Devices Table subview to the Base Station Details view.\nUpdated Base Station Time Drift Alert to take into account a Base Station's last connection time as well as uptime when calculating the drift.\nAdded fields to Cases for improved process tracking. These include Dispatch, Dispatch Reason, Estimated Cost, Cost, and Hours.\nAdded Support for the Tektelic KONA Enterprise (Requires Base Station Software v2.18+)\nAdded Current EUI column to the Cases table.\nAdded the ability to clear Alerts and create new Cases from the Alert Details View.\nAddressed an issue where Base Station tags could not be edited in bulk.\nUpdated the Map tooltips to show the Base Station name when available.\nAddressed an issue where the Low Transaction Count Alerts incorrectly rendered the latest system information.\nAddressed an issue with Base Station Reports where 12 AM/PM were rendered incorrectly.\nUpdated 'Configuration History' audit functionality to include Planning Map change events.\nLoRaWAN\nEnhanced Senet's LoRa Network Server FUOTA capabilities to allow Application Providers to set the fragment size limit for a firmware update.\nDevelopers\nUpdated the Device Delete workflow to allow Developers to delete a Device regardless of the Device's state.\nAdded support for user-specified Device Types.\nJune 2021 - Release Notes\nApplication Providers\nUpdated the 'Application Provider - Contracts View' user role to include the Application Usage view.\nAdded a Join Server Details view to display Devices and Events associated with a Join Server.\nUpdated the Date/Time control for event tables to support retrieving events either older or newer than the date/time specified.\nAddressed an issue where displaying events for Devices with extended periods of inactivity was incomplete.\nRAN Providers\nUpdated content formatting of Device and Transaction Count Alerts for improved readability, including the number of days of Base Stations availability used to calculate the average counts.\nUpdated Planning Maps export to include a Proposed Base Stations description in its path quality name.\nAddressed an issue with form auto-complete incorrectly replacing the Base Station Name during an edit operation.\nAddressed an issue where a \"No Records Returned\" message was displayed while Base Station Join Error Events were still loading.\nDevelopers\nAdded Auto Approval of Gateways running the Semtech Packet Forwarder or Basic Station software.\nUpdated the Gateway Registration workflow to allow manufacturer EUIs to be used.\nMay 2021 - Release Notes\nApplication Providers\nUpdated Application Usage Statistics views to display stacked column charts for selected Contracts.\nUpdated the Application Usage Statistics views to render data with the correct timezone.\nUpdated Northbound API to optionally include the Base Station receive time of an uplink.\nUpdated the Devices with Notifiers table to control Diagnostic Mode and edit Notifiers for Devices in Diagnostic Mode.\nImproved Device Events table by disabling auto-refresh when the view is scrolled.\nUpdated Device Management workflows to support Devices associated with an external Join Server.\nApplication Providers & RAN Providers\nImproved the usability of the Configuration History view by adding filtering capabilities and improving the naming conventions used.\nAdded support for creating and managing Custom Layers for Maps.\nRAN Providers\nUpdated the Path Quality Settings to support a multi-select Base Station Classification filter.\nUpdated Alerts to Include Base Station name instead of site id in both the description and email notifications.\nAddressed an issue where RTT Alerts did not generate Critical Asset email notifications.\nUpdated the Base Station Analysis Map to support exporting statistics scoped to the selected Base Station.\nAddressed an issue where a Base Station's Channel Mask Override parameter could not be modified.\nLoRaWAN\nUpdated Senet's LNS to support Semtech's LoRa Cloud Join Server.\nAddressed an issue where the Network Server did not consistently manage Devices updating their own ADR state.\nAddressed an issue where Join Error System Events were not displayed in the Base Station System Events view.\nFebruary 2021 - Release Notes\nApplication Providers\nUpdated Registration Token email to include remaining usage and expiration information.\nUpdated the Device Event and Transaction views to include a filter for Unique Uplinks/Downlinks.\nUpdated the Device Management API to support the transfer of Devices between accounts.\nAdded support for managing lifetime and use-count settings of Device Registration Tokens.\nApplication Providers & RAN Providers\nUpdated Path Quality calculation to allow overrides of Base Station height and radius as well as Device height.\nUpdated Planning Maps export feature to include the Path Quality, distance, height, and azimuth of the top 3 Base Stations used for Path Quality calculation.\nAdded Coverage Layer that displays Network coverage estimates for a given area.\nUpdated Path Quality calculation to allow for filtering by Base Station Classification.\nAdded Configuration History view for auditing change events.\nAdded Swagger documentation for integration APIs.\nAdded a workflow to Maps for measuring distance.\nRAN Providers\nImproved Base Station Events table by disabling auto-refresh when the view is scrolled.\nUpdated main Base Stations view to display the Base Station table instead of search.\nUpdated RAN Provider Contracts View user role to include the Alerts and Alert Statistics views.\nAdded the ability to clear Alerts from the Base Station Alerts table.\nAdded support for configuring the Base Station Tags field. The Tags field can be used for filtering Base Stations.\nAdded support for displaying a Base Station's friendly name instead of its EUI.\nDecember 2020 - Release Notes\nApplication Providers\nAdded support for filtering Devices included in Service Metrics view by Last Heard time.\nAdded support for multiple API Keys. API Keys can be generated to support specific functional areas, allowing granular control over access granted.\nUpdated Information and Settings for Devices to allow a custom Device Type to be specified.\nAdded Duplicate Uplinks count to both heatmap tooltips and table view for the Device RF Statistics.\nAddressed an issue where updates to the Metadata field were not handled properly.\nApplication Providers & RAN Providers\nAdded new administrative view for managing API Keys.\nAdded support for changing image opacity for Coverage Maps and Custom Layers.\nDevelopers\nAdded the ability for Developers to configure Firmware Version, Tags, and Metadata fields for their devices.\nRAN Providers\nAdded a new Software Upgrade dialog which will show available updates for Base Stations.\nAdded a new 'RAN Provider - Contracts View' Role that delegates access to Base Stations scoped by contract. This view provides read-only access for troubleshooting Base Station connectivity.\nAddressed an issue where Device counts on Base Station markers were incorrectly displayed on the Map.\nAdded support for ADTRAN's Micro 8 channel gateway.\nApplication Providers and Developers\nUpdated HTTP and MQTT Notifiers to allow forwarding of Firmware Version and Profile Name\nOctober 2020 - Release Notes\nApplication Providers\nAdded a new 'Application Provider - Contracts View' Role that delegates access to Devices scoped by contract. This view provides read-only access for viewing Device performance and troubleshooting Device connectivity.\nAdded new API which allows customers to export Application Usage Data.\nUpdated the Device export API to allow the user to specify Devices to export.\nUpdated Device Maps to display partial results when the Device display limit is exceeded.\nAdded new presentation option to allow combining charts in the Operational and Onboarding Summary views.\nAdded the ability to configure the Notifier for an Application. An Application Notifier defines the protocol, options, and fields to include when streaming data to a Northbound Endpoint.\nAdded support for selecting the time period used when displaying Device Service Metric statistics.\nUpdated the Application Details view to include LoRa events for all Devices associated with an Application.\nRAN Providers\nAdded support for visualizing multiple Structures at the same location.\nUpdated the Base Station Details RTT charts to include an RX1 threshold indicator.\nAdded a new monthly Base Station Availability report.\nAdded a new Backhaul Connection Change Alert which is raised when there is a change in a Base Station's backhaul connectivity.\nAdded a new High RTT Alert which is raised when the daily average round trip time with a Base Station exceeds the configured threshold.\nDevelopers & Application Providers\nUpdated HTTP and MQTT Notifiers to allow control over which data fields are included\nUpdated all LoRa Events tables to identify late uplinks by presenting their timestamps with italicized lighter text.\nLoRaWAN\nAdded the ability to initiate the FUOTA process to Class C devices.\nAdded the ability to initiate the FUOTA process to Class B devices.\nCorrected an issue where AU915 devices may have been commanded to use an artificially low DR.\nAugust 2020 - Release Notes\nApplication Providers\nAdded a new chart to the Device Statistics view for Join activity.\nAdded Service Metrics to help characterize Device performance over time. These measure Device activity against 1-, 2-, and 3 day periods with respect to the past 31 days.The data is presented in the Map view, on a new tab of the Device Statistics header.It can be exported from the Devices Table under Application Details or by using the associated API.\nThe data is presented in the Map view, on a new tab of the Device Statistics header.\nIt can be exported from the Devices Table under Application Details or by using the associated API.\nUpdated Notifier payloads to optionally include Device-Type (devType) when available.\nAddressed an issue where downlinks could not be queued via MQTT if the Device's EUI was not normalized.\nAddressed an issue where the Devices Table was either slow or failed to retrieve data.\nRAN Providers & Application Providers\nAdded user management view for managing users within a Customers account.\nRAN Providers\nAdded a new 'Outage Type' field to Case records. Values may be user-customized or provided as default in conjunction with a selected Issue Type.\nAdded a new view for creating and managing Alert Profiles, allowing custom Alert thresholds for one or more Base Stations.\nLoRaWAN\nIntroduced initial support for the LoRaWAN FUOTA 2.0 specification.\nUpdated the Base Station create/edit dialog with a control to indicate the requirement of dwell time restrictions.\nAdded support for CFList Type 255, allowing Device Join EUI reconfiguration as part of the Join Procedure.\nCorrected an issue where late Join Requests were processed as DevNonce replay events.\nCorrected an issue where uplinks with sequence number 0 were occasionally processed as retransmits.\nJune 2020 - Release Notes\nRAN Providers\nUpdated the view for Base Station diagnostic data for improved readability. This includes power and backhaul information as well as filtered NetIDs when available.\nAdded the ability to assign an Alert Profile to a Base Station.\nUpdated the Base Station table's Severity filter with a new selection: 'Connection-Issues Deployed'. This will filter the table to only Deployed Base Stations currently experiencing connection issues.\nApplication Providers and RAN Providers\nUpdated all Map views to allow toggling the display of road and point of interest labels.\nLoRaWAN\nAdded support for the LoRaWAN FUOTA Specification v2.0.\nCorrected Beacon format to comply with the LoRaWAN 1.0.4 specification.\nAdded a channel mask override to Base Station configuration settings to mitigate downlink channel interference while maintaining reception on all available channels.\nDevelopers\nAddressed a sorting issue with the PSR, Avg SNR and Avg RSSI columns in the Devices table.\nMay 2020 - Release Notes\nApplication Providers\nEnhanced Map support to include access to Custom Layers.\nImproved Devices and Application Devices table export compatibility with Excel. Dates and numbers are automatically recognized as the correct type for sorting.\nAdded the ability to filter Devices on a Map by Tag, Application, and Contract.\nAddressed an issue where Tag values could not be removed via Device Update.\nApplication Providers & RAN Providers\nAdded Summary Statistics header to Planning Maps. This header displays number of Planning Entries in a map and the Path Quality distribution.\nRAN Providers\nUpdated bulk Base Station provisioning to include Channel Plan configuration.\nUpdated Alert Engine so that Alert Levels 4 & 5 both support Low and Critical thresholds for Daily Device and Transaction Counts.\nEnhanced Path Quality calculation to allow comparison between coverage provided by owned Base Stations and the entire Network.\nAdded a new Base Station Details view for Join Errors to help troubleshoot Device issues.\nCorrected an issue where SSH Connection Alerts could be raised for Semtech Packet Forwarder and Basic Station connected Base Stations.\nAddressed an issue where a Base Station active for less than 7 days could raise Device and Transaction Count Alerts.\nUpdated the Base Station Heat Maps to always display 500 MHz channels.\nLoRaWAN\nAdded support for AS923-2 and AS923-3 regional variants.\nImproved the readability of the CFList information in the JoinAccept event.\nEnhanced ADR Engine to support using a subset of channels for a Base Station impacted by local interference.\nMarch 2020 - Release Notes\nApplication Providers\nAdded a new Application Alert that notifies an Application Provider when their Device Management Registration token is about to expire. By default, this Alert will be raised two weeks before the configured expiration date.\nAdded the ability to view a Device's Path Quality from the Map.\nAdded the ability to create and view Planning Maps allowing users to preview coverage and plan upcoming deployments.\nAdded the ability to specify the Client Certificate for MQTT connections.\nUpdated the Device Registration workflow to ensure imported files contain unique Application Keys and Device EUIs.\nRAN Providers\nUpdated Base Station Connection Alerts to allow for independent control of specific 'SSH Connection' and general 'No Connection' Alerts.\nAdded a monthly availability chart to the Alerts/Cases view in Base Station details.\nAdded the ability to create and associate contacts with Base Stations, allowing easy access to site personnel if issues arise.\nImproved Base Station Availability tracking by better accounting for actual LoRaWAN service interruptions.\nLoRaWAN\nAddressed an issue where dwell time could not be disabled on an AS923 device.\nAdded LoRaWAN version 1.0.4 support.\nEnhanced the LoRa Engine to both temper resending unanswered MAC commands as well as prevent resending NACK'd MAC commands.\nUpdated the LoRa Engine to deprecate the frame count gap limit (MAX_FCNT_GAP).\nAddressed an issue where immediate class A downlinks were not getting sent on RX1 even though there was enough time to send the downlink.\nImproved confirmed downlink traceability by allowing only one confirmed Class-B or Class-C downlink to be queued for all devices whose LoRaWAN version is lower than 1.1.x.\nDevelopers\nAdded the ability for Developers to reset a Gateway's registration, allowing them to resolve common on-boarding issues.\nJanuary 2020\nApplication Providers\nAdded new ‘Show Map’ feature to the Application Devices Table. Selecting 'Show Map' will insert a map below the table and display pins for devices with location data. Device row-selection will auto-center the map and animate the device pin in context.\nUpdated the Map Information Dialog to show the estimated location of a Device when its actual location is unavailable.\nAdded support for filtering the Application Devices Table based on current row-selection. The URL is updated with the list of selected Device EUIs, allowing for bookmarking.\nUpdated the Device Management API and UI to ignore invalid latitude and longitude values.\nUpdated the quick information popup in the Devices Table to include Tags and Metadata information.\nImproved the Device Update API to better validate data and return user-friendly errors to help troubleshoot issues.\nRAN Providers\nAdded the Base Station Analysis mode to the Map view. This filters the view to devices heard by a given Base Station and generates charts for the distribution of their collective DR, PSR, SNR, and RSSI data.\nUpdated the public API to support bulk-provisioning of Base Stations.\nImproved Base Station Registration workflows by allowing users to Delete Base Stations and reset a Base Station's registration status.\nAdded a 'Clear Selected' button to the Custom Layers selection dialog, allowing all selected layers to be cleared at the same time.\nAdded new visualizations to highlight Base Station interferers and foreign traffic. This chart display option requires Senet Packet Forwarder 02.01.08 or newer.\nUpdated the Base Station Alert priorities so that Time Drift Alerts are not triggered when a Base Station restarts.\nLoRaWAN\nAdded support for The Things Network's Join Servers. Devices registered within TTN's platform can seamlessly operate under Senet's Network.\nAddressed an issue where Class-A downlinks were not properly delivered to Semtech Packet Forwarders and Basic Stations.\nDecember 2019\nApplication Providers\nAdded support for scoping Application Details views by Contract. Views include Devices, Device Management, and Usage Data. Note: Aggregated data will only be displayed for transactions occurring after this feature release.\nAdded support for a new Device Metadata field. This new field allows for storage of custom information about specific Devices (e.g. serial number).\nAdded access to Application Usage data via a file download. These files contain detailed usage information for each device and Contract.\nAdded new table view which displays aggregate RF Statistics by channel.\nAdded support for viewing Device Transactions for all devices without requiring Diagnostics be enabled. Note: This view is intended for troubleshooting recent device activity and should not be considered a complete transaction history.\nAdded a Device Management Events view for Applications allowing users to view related audit events.\nUpdated the Device Export API to include devices' assigned Device Profile ID.\nUpdated the Application Details Dashboard charts to automatically synchronize zoom-level. This allows viewing the same time frame for all charts by changing the zoom-level for one.\nImproved the Device Update workflow to also update devices that have not yet joined the network.\nUpdated the Device Export API to support filtering by Contract ID and added a new column for yesterday's Base Station EUIs.\nAdded color-coded icons to the RSSI and SNR columns of the Events Table to better visualize signal strength and quality.\nUpdated the classification of SNR and RSSI values. SNR values below -13 and RSSI values below -125 are now considered poor (red).\nAddressed an issue where the search/filter was not applied when exporting devices from a table.\nUpdated Device Management API to allow contract assignment when Deactivating devices.\nAdded support for additional fields in the device map information dialog. It now shows contract, application, tags, and metadata on top of the existing data. There is also the addition of links to the devices location in Google and Bing maps.\nRAN Providers\nAdded new table view which displays aggregate RF Statistics by channel.\nAdded support for exporting Base Station Trend Reports to CSV files.\nAdded color-coded icons to the RSSI and SNR columns of the Events Table to better visualize signal strength and quality.\nUpdated the Base Stations table to add a column for a Base Station's OS Version.\nLoRaWAN\nAdded support for LoRaWAN Class-B FUOTA.\nAdded support for Join-Accept Type-1 CFLists in US915 and AU915.\nAdded FUOTA support for RX2 frequencies in EU868, IN865 and AS923.\nImproved the handling of Devices with poor downlink reception by alternating between RX1 and RX2 when responding to uplinks with ADRACKReq set.\nUpdated FUOTA support to include STMicro’s Class-B FUOTA implementation.\nCorrected an issue with Class-C downlinks through Semtech’s Packet Forwarder.\nImproved the handling of Devices with poor downlink reception (e.g. ADRACKReq is set) by optimizing the LinkADRReq parameters delivered in subsequent downlinks.\nAddressed a downlink processing error for devices that have not uplinked.\nAddressed an issue where the Gateway Time field of the Join-Accept event reflected the Processed Time instead of the actual Transmit Time.\nDevelopers\nAddressed an issue with the background style of the Dashboard.\nOctober 2019\nApplication Providers\nAdded support for daily aggregated data in the Device Details RF Statistics view. This provides greater visibility into daily trends for Uplinks, SNR and RSSI statistics.\nAdded Support for a Device export API.\nAdded support for User Accounts with read-only access for Application Providers.\nIncreased the Map's Device export capacity to a maximum of 10K Devices.\nUpdated Device deactivation workflow to optionally allow assigning a contract.\nAddressed an issue with restoring the Application Device Management and Alert views after reloading the browser.\nAddressed an export issue that occurred when the Device Management Table was sorted.\nRAN Providers\nAdded support for daily aggregated data in the Base Station Details RF Statistics view. This provides greater visibility into daily trends for Uplinks, SNR and RSSI statistics.\nAdded secondary sorting on the average and delta columns of the Base Station trend report tables to allow better grouping.\nAddressed an Uptime field export issue in the Base Stations Table.\nLoRaWAN\nAdded support for clearing the device downlink queue when enqueuing a new downlink.\nAddressed an issue where AS923 ISM downlinks could have used an incorrect data rate.\nAddressed an issue where PSR would occasionally calculate to 0 for devices located on the edge of service.\nAll Portal Users\nExternal access to web-services has been restricted to Senet's public API.\nAugust 2019\nApplication & RAN Providers\nAdded a feature for exporting Devices, Base Stations and Structures from the Map to a CSV file.\nApplication Providers\nAdded an Alert Statistics view for Applications.\nAdded Northbound support for ActiveMQ Artemis using MQTT.\nUpdated Join failure events to include the Join EUI and the registration state of the device.\nImproved data export performance from the Devices table.\nAdded failed Join attempt events to the Application's Events view.\nUpdated the Application's Devices table to display firmware information.\nAddressed an issue where the Devices with Notifiers table did not sort properly.\nAddressed an issue where devices for an Application could not be viewed and exported correctly.\nAddressed an issue where queued Downlinks could be lost during an MQTT Server fail-over.\nAddressed an issue where the Device Events table did not properly filter Application Downlinks.\nRAN Providers\nUpdated the Base Station Summary hourly charts to include 3 days of data.\nAdded a Base Station management API to update deployment information for a Base Station.\nAdded new marker colors for Planning Maps.\nAdded an Alert Statistics view for Base Stations.\nAdded Case Management functionality, allowing users to track issues for their Base Stations.\nAdded workflow to provision Base Stations in bulk.\nUpdated the Base Station Events Table to query up to 3 days of event history, making it easier to browse data with gaps in activity.\nAddressed an issue where Base Stations using the Semtech Packet Forwarder did not display status properly.\nImproved data export performance from the Base Stations table.\nDevelopers\nUpdated the Developer Portal to ensure deleting a device removes only registration data.\nLoRaWAN\nAddressed an issue with the AS923 maximum downlink packet size calculation.\nEnhanced protection against late-arriving Join Requests, which may occur when a Base Station temporarily loses connectivity and queues receptions.\nUpdated handling of TxPower for EU868 and AS923.\nUpdated handling of a 16 channel gateway being configured to use an 8 channel plan.\nJune 2019\nApplication Providers\nAdded a new Device Profile setting, LoRa Device Class, that determines the default method for sending downlinks. This simplifies deploying Production Class-C Applications.\nAdded Notifier connection errors to the system events table within the Application Details view. These new events aid in troubleshooting northbound interface issues with Application Providers.\nRAN Providers\nAdded a new Reports area containing a set of trend reports. These include 30-day reports for transactions, devices, and availability per Base Station as well as an hourly availability report spanning the previous 24 hour period.\nImproved the collection and presentation of Base Station status information throughout the application's tables and maps.\nDevelopers and Application Providers\nCorrected an issue where the FPort used for Downlinks was not consistently shown in the events table.\nImproved the error message presented in the event a downlink message cannot be processed.\nMay 2019\nDevelopers\nFixed an issue where Portal Device registration was allowed using the EUI of a Device that was already registered.\nApplication Providers\nDevice ManagementThe Device Management API now supports a method for activating a single device.The Device Management APIs now supports a callback URL for obtaining the results of a bulk operation.Devices which have been Activated but have not Joined now support having their properties updated.Device Profiles for Devices can now be edited through the \"Update Devices\" window and API.Device Types for Devices can now be provisioned during the Device Registration and Activation process and edited through the \"Update Devices\" window and API.\nDevice Management\nThe Device Management API now supports a method for activating a single device.\nThe Device Management APIs now supports a callback URL for obtaining the results of a bulk operation.\nDevices which have been Activated but have not Joined now support having their properties updated.\nDevice Profiles for Devices can now be edited through the \"Update Devices\" window and API.\nDevice Types for Devices can now be provisioned during the Device Registration and Activation process and edited through the \"Update Devices\" window and API.\nDevice Maps now support displaying all Devices regardless of last heard time. This feature is accessed from the Device Statistics panel.\nDevice Maps now support displaying all Devices regardless of last heard time. This feature is accessed from the Device Statistics panel.\nApplication Notifiers can now be configured to operate asynchronously. Application Notifiers configured this way will have increased throughput by allowing for multiple simultaneous connections to an Application Provider's end-point.\nApplication Notifiers with Batching Support are now configurable with custom batch sizes and intervals.\nRAN Providers\nThe Base Stations Detail window now includes a new \"Discarded\" chart. This chart displays a count of all uplinks Discarded. Discard reasons include Uplinks for foreign networks and improperly formed Uplinks Requires Base Station software 2.9 or greater.\nRAN Providers and Application Providers\nMap display attributes like location, zoom level, and layer configuration are now encoded in the browser URL. This allows for easy sharing of maps.\nApril 2019\nAll Users\nThe Device RF Heatmap views now supports time navigation controls to allow troubleshooting historical events. This control allows traversal of the historical RF data in 1 hour, 6 hour or 1 day increments.\nApplication Providers\nDevice activation performance has been improved by optimizing data integrity checks during processing local application servers.\nSeveral FUOTA enhancements were implemented including support for EU868 End Devices, UI improvements, and generation of audit events for tracking the FUOTA process.\nRAN Providers\nThe Base Station RF Heatmap views now supports time navigation controls to allow troubleshooting historical events. This control allows traversal of the historical RF data in 1 hour, 6 hour or 1 day increments.\nLoRa\nThe Northbound API now supports the ackDnMsgId field. When present, it indicates a device has acknowledged a specific downlink message ID.\nThe LoRa engine has been enhanced for users to indicate how the Network Server should send on-demand application downlinks, based on the operational class of the target device. When operating as Class-B or Class-C, the Device's Details > Send Downlink UI will display a Device Class selector.\n Downlink options include:Class-A: Queue the downlink until the next uplink's receive windows are availableClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slotClass-C: Do not queue; transmit immediately.\nThe LoRa engine has been enhanced for users to indicate how the Network Server should send on-demand application downlinks, based on the operational class of the target device. When operating as Class-B or Class-C, the Device's Details > Send Downlink UI will display a Device Class selector.\n Downlink options include:\nClass-A: Queue the downlink until the next uplink's receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\nFebruary 2019\nLoRa\nAdded status events for downlink transmit activity reported by Gateways to improve message traceability.\nEnhanced FUOTA support by adding compatibility with additional end-device stack implementations as well as compliance with EU ISM Duty-Cycle requirements.\nAdded a new Security Session event type to the Device Details transactions and events tables. This event indicates a device has processed a Join Accept, derived new session keys, and subsequently uplinked. The event's SeqNo identifies the first uplink received after the Join Accept was sent.\nApplication Providers\nApplication Providers can now see a list of the Device Profiles used by their Devices.\nThe Device Profile table can now be viewed in Application Details.\nAdded the ability to append, replace or delete Device tags from the Device update UI (using a csv file) and the Device update API (using JSON).\nAdded notifier support for the IBM Watson Scalable Application platform.\nImproved the PSR algorithm to better account for devices with an infrequent uplink interval.\nRAN Providers\nThe Base Station Details Summary view now contains a Filtered Transactions chart. This chart displays transactions that were filtered from the Network Server.\nJanuary 2019\nLoRa\nA new REST API was added for sending multicast downlink messages to multiple Base Stations.\nEnhanced the LoRa engine to comply with the FUOTA Interoperability Test suite from Stackforce and Arm Mbed.\nAll Users\nThe Device Details view now includes uplink channel utilization heat maps displaying RF Statistics over time.\nApplication Providers and Developers\nThe Map view now provides the ability to visualize a device's predicted Path Quality by drawing vectors to Base Stations providing coverage.\nApplication Providers\nDevice Registration and Activation workflows now support device location and tags.\nThe Application Details view now includes a table displaying available contracts.\nThe Application Details view now includes the number of devices in the Activated and Registered states.\nRAN Providers\nAdded support for decommissioning Base Stations.\nNovember 2018\nLoRa\nImproved the Network Server's handling of uplink re-transmissions.\nFixed an issue where downlinks to Class-B and -C devices were occasionally scheduled for the same transmit time.\nRAN Providers\nThe Alert behavior for Base Stations is now configurable.\nBase Station Availability is now calculated from the number of successfully received status polls when Alerting is disabled.\nRAN Providers and Application Providers\nThe Alert Details views have been redesigned for clarity and consistency.\nApplication Providers\nFixed an issue where Tags could not be added to Devices.\nOctober 2018\nThe Device Details view is now available for any device across all associated Applications, and the requirement of diagnostics mode to view Device Statistics was removed.\nThe Device Profile that governs how the Network Server manages end devices can be assigned as part of the Device registration and activation workflows.\nAn Alerts view was added providing visibility of Alerts for Applications.\nImproved usability of Maps with small visual cues: yellow caution icon decorations indicate a data layer is not available to display, while the refresh button wiggles when that action is required to display all available data.\nSeptember 2018\nDevice registration for OTAA and ABP now allows users to enter custom application, join server and session keys. This provides greater flexibility for developers whose devices have different network configurations.\nThe 'Copy to Clipboard' buttons found in Device dialogs now support the short form Hex and long form Binary Array data formats.\nThe Device Details LoRa event tables (Transactions, GPS, Sensor and Events) now persist the expanded/collapsed state of expandable columns.\nImproved handling of downlinks cached by MQTT brokers.\nCorrected an issue where the gateway elected to downlink was occasionally not the optimal candidate based on RF data from the corresponding uplink.\nJuly 2018\nAll Users\nThe Tektelic KONA 16 Macro Gateway is now supported.\nThe LoRa event table now supports a quick filter option. Events can be filtered by: Unique Uplinks, Join Activity, Application Downlinks and ADR Activity\nDevelopers\nAll gateways except for packet forwarders are now automatically approved when registered. Packet forwarders still require manual approval by Operations.\nThe Devices table now includes columns to show the application EUI and the last heard from time.\nApplication Providers\nDevice Map Support - A Map view was added which allows Application Providers to manage and visualize devices on a Map.\nDevice Grouping Support - Application Providers can now use tags to qualify, group, and filter rows in the Devices table view for all their applications.\nDevice Grouping and Location information can now be updated through a CSV import and a REST API using JSON.\nNorthbound Interface - Health statistics for the last 7 and 31 days are now available in the Application Details panel.\nNorthbound Interface - Azure Event Hub integration using HTTPs is now supported.\nJune 2018\nThe Streaming API now includes the LoRaWAN Class designation (\"A\", \"B\", \"C\") of the source device in the JSON payload.\nSupport was added for Tektelic’s KONA series microcell gateways.\nThe device transactions and gateway events tables have been enhanced to include a quick summary window. The window can be displayed by pressing the \"i\" icon next to the EUI.\nMay 2018\nSupport was added for Ezurio (Laird) Sentrius gateways.\nAustralian and Latin American regional channel plans are now supported.\nAdded support for TrackNet’s Object Locator and Door Sensor, as well as Xignal’s mouse trap.\nThe downlink message queue for a device will be cleared when it is deactivated.\nNorthbound API now includes estimated latitude and longitude of devices based on the number and location of gateways receiving their uplinks.\nApril 2018\nNotifiers now support including the ACK bit setting from uplinks' frame header, allowing remote applications to verify downlink success.\nImproved presentation of uplinks received in response to confirmed downlinks: the event details of only the first uplink processed will reflect the acknowledged downlink sequence number.\nThe join type (OTAA/ABP) of a device is now displayed in the Devices table. The \"Join Type\" column is hidden by default.\nThe Encrypted PDU, App Payload, and Details columns in the Device Details Transactions table may now be expanded and collapsed by clicking an icon in the column header.\nFebruary 2018\nThe device registration workflow now allows assignment of configuration profiles, allowing devices to benefit from optimizations encapsulated by the profile immediately after joining the network.\nProfile based ADR management now includes controls over how responsive the Network Server is to changes detected in device behavior. It can be stringent, flexible, or a combination of both. This change allows the Network Server to continually adapt to changing deployment conditions in order to optimize packet and data success.\nThe Network Server will now use device uplink data to substantiate equal or better coverage from macro-cell gateways before transitioning devices to expanded channel plans. This prevents negative outcomes by expanding channel plans too quickly when coverage changes.\nCustomers may now clear downlinks in-queue with the updated API, improving the level of control in managing devices.\nJanuary 2018\nThe Device Details in Portal now shows the encrypted app payload if the decrypted app payload is not available.\nDevice registration is now secured with two factor authentication. A user must supply a token emailed to their registered address to complete the action.\nThe LoRa Engine now supports full transition of end devices to Class B operation, including LoRaWAN 1.0.3 Beacons.\nAdded support for GlobalSat LT-501 series devices.\nDecember 2017\nSenet now supports self-service gateway registration for the following: MultiTech Conduit IP67, Kerlink Wirnet iBTS 64, Kerlink Wirnet iBTS Compact, Kerlink Wirnet Station, Tektelic KONA 64 Macro\nSenet's LoRa Engine has been enhanced to support additional application deployment models. This allows both a single Join-EUI to be associated to different applications, or a single application to be serviced by any number of Join-EUIs.\nDevice Details view now includes Security Sessions counter: the number of times a device has successfully joined the network today.\nCorrected an issue where DataRate was not displayed correctly in the Device Transactions table.\nNovember 2017\nSenet’s Network now supports MultiTech’s Conduit AP gateway.\nSenet’s Network now supports Kerlink’s iFemtocell gateway.\nThe MQTT Notifier now supports authentication and encryption.\nCorrected an issue with the MQTT Notifier where downlink messages occasionally failed.\nOctober 2017\nMinor fixes and improvements made to the Portal UI, including search responsiveness, device detail information and charts presentation.\nImproved handling and feedback of TCP Socket Notifiers that are misconfigured or experience connection errors.\nAdded support for G+D Mobile Security’s Key Management System (KMS) platform.\nImproved integration with the Yodiwo IoT platform.\nSeptember 2017\nAll events are now recorded using the Network Server's time. In previous releases, gateway time was used for events sourced from gateways.\nCorrected an MQTT notifier issue which could cause client connections to be leaked.\nManual-refresh of Device events and transactions tables no longer causes duplicate rows, and the tables' view-port is maintained on actively selected rows - otherwise it will focus on new entries added by auto-refresh.\nCorrected an issue where more than one email was sent for disabled Notification Targets.\nImproved the presentation and readability of a Device’s channel plan in the Device Details panel.\nAugust 2017\nAdded support for LoRa Class C downlinks\nCorrected an issue where more than one email was sent for disabled Notification Targets.\nTables now export data in Excel format to improve opening in that application.\nJuly 2017\nGateway Details view was added to the Portal which displays summarized event, device, and transaction data.\nImproved initial Portal application load time.\nData Streaming - Yodiwo IoT platform now supported.\nAn e-mail is now sent to a user when a Notification Target has been disabled.\nDevice Details Send Downlink PDU interface now supports the correct maximum timeout.\nDevice Details view navigation was improved on the mobile version of the Portal.\nThe fPort value contained in the Device Details Pending Downlink message now displays correctly.\nJune 2017\nDevice Details panel includes the LoRa NetID for ABP device.\nGateway registration panel now blocks attempts to repeatedly click register button.\nDevice Downlink panel now supports custom FPort values.\nGPS Map view now properly renders SNR of -1.\nGPS Location fields are now displayed in consistent order (latitude/longitude).\nGPS Map properly resizes to window dimensions.\nGateway registration now validates latitude and longitude.\nMay 2017 Rel. 2\nAdded support for LoRa Activation By Personalization (ABP)\nAdded support for Elsys devices\nImproved presentation of Application EUI and Key in the Edit Device dialog\nStandardized the placement of Map element information\nPacket Success Rate (PSR) now shown as “N/A” for devices whose uplink interval cannot be determined\nSeveral improvements to mobile version of the site, specifically for use in landscape mode\nData Streaming - Support for Senet’s Packet Format is correctly reflected in the Edit Device dialog\nData Streaming - PubNub and Microsoft Azure IoT notification targets can now be configured correctly\nGPS-based data points now display the correct data and may be filtered from view by Gateway\nMay 2017 Rel. 1\nSignificant improvement made to event table performance: load times reduced to 1/10th for large tables.\nEvents tables are now searchable.\nLoRa Frame control and MAC Command information are now displayed in event tables.\nRSSI and SNR values are now properly displayed for Join Request events.\nRSSI values are now adjusted to account for negative SNR values.\nImproved display of panels in landscape mode on Mobile.\nImproved scrolling behavior on Mobile.\nImproved performance of UI when changing Dashboard settings.\nGPS map is now properly sized to panel area.\nGateway operational status now updates after registration.\nData Streaming - decoded fields are now sent for all Senet Packet formats.\nAdded support for Arduino Gateways.\nAdded support for GlobalSat LT-100 tracker.\nAdded support for Ascoel motion detector and door switches.\nImproved format of Application Keys and Application EUI used for configuring device.\nApril 2017\nDevices not heard from in a month or more are displayed in light gray.\nGateway description is now editable.\nDevice and Gateway tables now support multi-row delete.\nDevices not accounted for in the Type list can now be qualified as \"Other\" Type.\nUsers can now register any gateway preloaded with Senet's software by using the new ‘Generic 8 Channel Gateway’ Type.\nSequence number displayed in Sensor data panel is now correct.\nSNR and RSSI values are now properly rendered.\nThe correct Application EUI is now displayed when registering Application Provider devices.\nMobile - Improved navigation & rendering for both iOS and Android.\nMobile - Tables now support horizontal scrolling.\nMobile - Account management is now available.\nData Streaming - Updated MyDevices integration to include Senet Packet data when available.\nData Streaming - Updated ThingSpeak integration to always include LoRa application payload.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nFrom here you can search these documents. Enter\n your search terms below."
313 },
314 {
315 "platform": "Senet",
316 "type": "docs",
317 "source": "https://docs.senetco.io/ap/nwkMgmtApi/",
318 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nNetwork Management Notification API\nHTTP Method\nField Descriptions\nAlert Type Field Descriptions\nExample\nSenet Packet Format\nNetwork Management Notification API\nNetwork Management Notifications are administered by Operators and require their assistance to set up for use. This is a unique Notifier type that forwards alert status events for owned assets with alerting enabled. The type of the message determines the body of the message:\nHTTP Method\nPOST\nField Descriptions\nAlert Type Field Descriptions\nAlert type messages contain detailed information about the alert that was either raised or cleared.\nExample\n{\n \"type\":\"APPLICATION\",\n \"subType\":\"ALERT\",\n \"data\":[\n {\n \"count\":\"3\",\n \"latestystemInfo\":\"Notifications: 0.0 Threshold: 3000000\",\n \"identifier\":\"XXXXXXXXXXXXXXXX\",\n \"lastOccurrence\":\"2019-05-09T19:01:56.765Z\",\n \"status\":\"cleared\",\n \"severity\":\"Moderate\",\n \"name\":\"Low Notification Count\",\n \"notes\":\"\",\n \"firstOccurrence\":\"2019-05-09T18:55:16.887Z\"}\n ]}\n{\n \"type\":\"APPLICATION\",\n \"subType\":\"ALERT\",\n \"data\":[\n {\n \"count\":\"3\",\n \"latestystemInfo\":\"Notifications: 0.0 Threshold: 3000000\",\n \"identifier\":\"XXXXXXXXXXXXXXXX\",\n \"lastOccurrence\":\"2019-05-09T19:01:56.765Z\",\n \"status\":\"cleared\",\n \"severity\":\"Moderate\",\n \"name\":\"Low Notification Count\",\n \"notes\":\"\",\n \"firstOccurrence\":\"2019-05-09T18:55:16.887Z\"}\n ]}\nSenet Packet Format\nIn addition to the aboveJSONpayload types, Senet also offers an extended payload if the Device implements the standard Senet Packet Format. See theSenet Packet formatdocumentation for more details.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
319 },
320 {
321 "platform": "Senet",
322 "type": "docs",
323 "source": "https://docs.senetco.io/rp/gw/gwDetails/",
324 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nBase Station Details\nSummary\nRF Statistics\nEvents\nDevices\nBase Station Diagnostics\nAlerts and Cases\nSite Info\nStatistics\nBase Station Details\nBase Station details show the health history of a Base Station, the events it is processing, RF statistics, diagnostics, and transaction statistics.\n\nSummary\nThe default view and the summary of a Base Station can be seen by clicking the Summary button.\nThe left pane shows various Base Station details including times for last packet and contact, system uptime, GPS data, etc.\n\nThe upper right pane contains numerous charts of important statistics used to help diagnose the status of the Base Station. These include:\nLoRa Radio Errors include: No CRC Present, Invalid CRC, and Radio Error\nPacket Errors include: No MIC, No Device Address, No Device ID, Invalid LoRa MTYPE, Invalid LoRa MHDR value\nOther contributors: Rate Limiting, De-Duplication\n\nA Base Station that is communicating as expected with the Network Server has RTT values that fall below the RX1 threshold indicator as shown here:\n\nWhen the RTT exceeds the RX1 threshold, the chart displays the line in red, indicating a communication issue:\n\nThe System Events table in the lower right pane shows the Base Station's operational events, e.g. disconnects and reconnects to the Network Server.\n\nRF Statistics\nThe RF Statistics pagedisplays a heat map for the following RF parameters over time. Median SNR Per Channel, Average RSSI Per Channel, and Uplinks Per Channel.\n\nA summarized version of the RF Statistics can also be viewed as a table. The statistics are average values for collected data over the specified time frame. The averages exclude time intervals where no data was collected.\n\nEvents\nThe Eventsview provides detailed insight into the LoRa events associated with Device communications with the Base Station. Two sub-views are presented, the LoRa Events view and the Join Errors view.\nLoRa Events\nThe LoRa Events view shows all the uplinks and downlinks successfully processed by the Base Station along with the packet details.\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip. Events that are received late are specifically identified with light italicized text in the Time column.\nDate/Time Filtering:\nEvents can be filtered to those that occurred at a specific point in time using the Date/Time filter. Click thebutton to open the limit and Date/Time filtering options for the view.\nThe options popup has two modes, a row limiting mode and a Date/Time filter mode. The row limit mode is used to define the number of events that are returned from the server. Limiting the number of rows returned generally improves data processing performance.\n\nAs noted, the Date/Time filtering mode is used to filter events to a specific point in time. Selecting a date and time, determines the starting point for the events that will be returned. The Duration value determines the maximum amount of time from the specified start time that events will be returned.\nFor example, starting at 7 a.m. with a duration of 1 hour will return events that occurred between 7 a.m. and 8 a.m if \"Newer\" is selected. Otherwise if \"Older\" is selected, events from 7 a.m. to 6 a.m. will be returned. Since the number of events that occur within a specified timeframe is variable, the Max Rows value is used to further limit the returned data.\n\nAuto Refresh\nBy default, the Events table appends new events periodically every 30 seconds. This behavior is disabled when either a Date/Time filter is applied or the view is scrolled to a position other than the top of the table. Auto-refresh is re-enabled when either the view is refreshed or the view is scrolled back to the top.\nAn indication of the auto refresh status is displayed in the Event table's footer as shown here:\n\nJoin Errors\nThe Join Errors view shows information about LoRa events that are discarded by the Base Station such as failed join attempts. This view assists in troubleshooting Device connection issues.\n\nDevices\nThe Devicesview displays a historical view of Devices heard by a Base Station. The view provides a consolidated view of the Device RF statistics and location information for Devices heard by the Base Station within the specified period. The list of Devices can be further scoped to only the Devices exclusively heard by the Base Station. This view assists in troubleshooting Device communications with the selected Base Station.\n\nBase Station Diagnostics\nBase Station Diagnosticshelp understand a problematic Base Station.\nIf running the latest compatible Senet Base Station software,Support FilesandSpectral Scanscan be generated along with setting the information level on a Base Station.\n\nAdditional diagnostic information is displayed in the Basic and Advanced Diagnostics sub-views. Content in these views is hardware and firmware dependent and will vary between different Base Stations.\nThe Basic Diagnostics view displays critical Hardware, Backhaul and GPS information in a panel layout for quick reference.\n\nThe Advanced Diagnostics view displays all available Base Station data in tabular format. Displayed values may contain nested JSON data that may be relevant to more sophisticated users.\n\nAlerts and Cases\nClick on thebutton to show a consolidated view containing the Base Station Availability chart, the list of Active and Recent alerts related to the Base Station and a list of Cases.\nNote\nThis button is only available if Alerts have been enabled on the Base Station.\n\nThe Availability chart shows Hourly, Daily and Monthly breakdowns of Base Station availability. Availability is determined by the absence of communication from a given Base Station. Base Stations communicate status every minute. If less than 60% of the status messages are received in a 5 minute period, the Base Station is marked as unavailable.\nIn this example, the hourly Availability report shows that the Base Station was unvailable on 6/7/2021 between 12 PM and 2 PM.\n\nClicking on any of the red, hourly cells in the chart launches a dialog that shows the Alert(s) related to the outage. This screenshot of the dialog shows that there was a packet forwarder disconnect starting at 12:05 PM on 6/7/21 and ending at 2:05 PM. The issue was addressed and the Availbility returned to 100% until the next outage on 6/9/2021.\n\nSite Info\nClick on thebutton to view the Site, Registration, Contacts, Lease or Internet Connection information related to the Base Station.\nThe Site Details view shows details of the Base Station installation. This includes information about who installed the Base Station, how much it cost to install and when the installation occurred.\n\nThe Registration Information view shows Base Station information collected at the time of registration. This includes the original Contact information associated with the Base Station.\n\nThe Contacts view provides information for personnel associated with a Base Station. Multiple resources are added through this view; for example, primary and/or secondary contacts who provide Base Station services like lease agreements or site maintenance.\n\nThe Lease view shows the details of the contractual terms associated with a Base Station installation. This includes the critical details of the Lease such as when the Lease starts, when it ends, the rental period, the rental fee, and the name of the lessor.\n\nThe Internet Connections view provides a mechanism for viewing or editing internet connection information associated with the Base Station. This may include adding details about the type of connection, ex. Ethernet, cellular or satellite, as well as associated costs.\n\nStatistics\nClick on theicon to see various transaction statistics for the history of the Base Station. Each statistic is aggregated based on the selected period, ex. Monthly, Daily, Lifetime.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
325 },
326 {
327 "platform": "Senet",
328 "type": "docs",
329 "source": "https://docs.senetco.io/rp/statusmap/",
330 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nNetwork Status Map\nBase Station Status\nBase Station Coverage Area\nBase Station Details Summary\nNetwork Status Map\nThe network status map provides a quick look at the status of the deployed network. This overview includes the current health of the deployed Base Stations and Devices.\n\nBase Station Status\nConnection Status\nBy default the map shows the connection status of the Base Station with color indicators. Icon colors are based on a combination of Connection Status, Alert Severity and Case Priority. The coloring is hierarchical, with the color of the most severe state taking precedence. This color should be the same as the color displayed for the status column in the Base Station table, the Base Station Details view and the Map popup dialog.\nStatus Color\nBase Station Summary\nWhen zoomed in on the map looking at a Base Station the icon updates to show more detailed information.\n\nThis icon shows a summary of the current Base Station.\nThe color of the icon represents the connection status.\nThe Number at the top of the icon is the average number of devices heard by this Base Station.\nThe number on the bottom right of the circle indicates the number of RX channels supported by the Base Station.\nThe Letter on the bottom left indicates the Base Station Model type.\nBackhaul Connection Type\nThe Base Station Status Icon also shows decorations that indicate the active backhaul connection type of the Base Station. The icon will show a wireless decoration if the Base Station is connected to the network via a cellular backhaul or an ethernet port decoration if an ethernet connection is used. Both decorations are shown if the Base Station is using redundant connections. If no decorations are shown, the backhaul connection type is either unknown or a less common type like satellite.\n\nFiltering By Base Station Admin Status\nThe Base Station icons displayed on the Map may be filtered to show those with a specific administrative status. Administrative status is an additional state of the Base Station that is distinct from connection status. It is used to track operational management status such as being targeted for maintenance. SelectFilter Base Stationsfrom the layer button to launch the filter dialog.\n\nThen select an Admin Status from the dropdown to show matching Base Stations\n\nBase Station Coverage Area\nLeft clicking on a Base Station at the appropriate zoom level, will display the approximate coverage area for the Base Station. This coverage takes into account the surrounding topology, given antenna height and other factors.\n\nCoverage Visibility\nCoverage visibility depends on a number of factors including whether the Base Station layer is enabled, whether the Base Station is owned and whether the Base Station is a participant in the LVN. The following table provides an summary of these cases:\nCoverage Image Opacity\nThe opacity of coverage images can be customized from the Layers button. Click the Set Overlay Opacity menu item to launch a dialog to customize the opacity.\n\nBase Station Details Summary\nRight click a Base Station's icon to show an informational dialog in the lower left corner of the map.\n\nBase Station Analysis\nThe Base Station Analysis feature scopes Devices displayed on the map to those heard by the Base Station for the selected time-frame. The \"Unique\" checkbox will further restrict Devices displayed to those only heard by the Base Station for that time.\nExample: Devices shown before Base Station Analysis\n\nDevices shown after Base Station Analysis\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
331 },
332 {
333 "platform": "Senet",
334 "type": "docs",
335 "source": "https://docs.senetco.io/dev/supportedRegions/",
336 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nSupported Regions\nUS 902-928 - 8 Channel Plan\nUS 902-928 - 64 Channel Plan\nEU 863-870 - 8 Channel Plan (867.1-867.9)\nEU 863-870 - 8 Channel Plan (868.1-869.5)\nEU 863-870 - 8 Channel Plan (866.5,866.7,867.1,867.3,867.9)\nEU 863-870 - 8 Channel Plan (867.1,867.3,867.5,867.9,868.9)\nEU 863-870 - 8 Channel Plan (866.8,867.1,867.3,867.7,867.9)\nEU 863-870 - 16 Channel Plan\nIndia 865-867 - 8 Channel Plan\nAS 923-1 - 8 Channel Plan (923.2-924.6)\nAS 923-1 - 8 Channel Plan (922.0-923.4)\nAS 923-1 - 16 Channel Plan (921.6-924.6)\nAS 923-1 - 16 Channel Plan (920.6-923.6)\nAS 923-2 - 8 Channel Plan (921.4-922.8)\nAS 923-3 - 8 Channel Plan (916.4-917.8)\nAS 923-4 - 8 Channel Plan (917.3-918.7)\nAU 915-928 - 8 Channel Plan\nAU 915-928 - 64 Channel Plan\nSupported Regions\nSenet supports the following regional channel plans. Please take note this is a limited set. For regional plans not listed please contactcustomer supportfor an updated list.\nUS 902-928 - 8 Channel Plan\nUS 902-928 - 64 Channel Plan\n\nEU 863-870 - 8 Channel Plan (867.1-867.9)\n\n\nEU 863-870 - 8 Channel Plan (868.1-869.5)\n\nEU 863-870 - 8 Channel Plan (866.5,866.7,867.1,867.3,867.9)\n\nEU 863-870 - 8 Channel Plan (867.1,867.3,867.5,867.9,868.9)\n\nEU 863-870 - 8 Channel Plan (866.8,867.1,867.3,867.7,867.9)\nEU 863-870 - 16 Channel Plan\nIndia 865-867 - 8 Channel Plan\nNote\nRX2 downlinks are sent on the default parameters 866.550 MHz / DR2 (SF10, 125 kHz).\nClass B Beacons are sent on the default parameters 866.550 MHz / DR4 (SF8, 125 kHz).\nAS 923-1 - 8 Channel Plan (923.2-924.6)\nCountries:Australia, Bangladesh , Brunei, Cambodia, Cook Islands, Costa Rica, Curacao, Hong Kong, Japan , Laos, Macao, New Zealand, Niue, Norfolk Island, Pakistan, Papua New Guinea, Singapore, Solomon Islands, Taiwan, Tanzania, Thailand, Tokelau, Uganda, Venezuela\nAS 923-1 - 8 Channel Plan (922.0-923.4)\nCountries:China, Malaysia, Myanmar\nAS 923-1 - 16 Channel Plan (921.6-924.6)\nCountries:Australia, Brunei, Cook Islands, Costa Rica, Curacao, Hong Kong, Japan, Macao, New Zealand, Niue, Norfolk Island, Pakistan, Papua New Guinea, Singapore, Solomon Islands, Taiwan, Tanzania, Thailand, Tokelau\nAS 923-1 - 16 Channel Plan (920.6-923.6)\nCountries:China, Malaysia, Myanmar, Singapore, Sri Lanka\nAS 923-2 - 8 Channel Plan (921.4-922.8)\nCountries:Indonesia, Vietnam\nAS 923-3 - 8 Channel Plan (916.4-917.8)\nCountries:Albania, Algeria, Bouvet Island, Comoros, Cuba, Denmark, Estonia, Greenland, Guernsey, Heard Island & McDonald Islands, Hungary, Iran, Ireland, Isle of Man, Jersey, Kuwait, Kuwait, Liechtenstein, Luxembourg, Moldova, Norway, Philippines, Poland, Russian Federation, Saudi Arabia, Slovakia, Somalia, So. Georgia/So. Sandwich Island, Svalbard and Jan Mayen, Switzerland, United Arab Emirates, United Kingdom, Vanuatu\nAS 923-4 - 8 Channel Plan (917.3-918.7)\nCountries:Israel\nAU 915-928 - 8 Channel Plan\nAU 915-928 - 64 Channel Plan\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
337 },
338 {
339 "platform": "Senet",
340 "type": "docs",
341 "source": "https://docs.senetco.io/dev/#customize-the-dashboard",
342 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nDeveloper Documentation\nDashboard\nDevice Details\nEdit Device\nGateway Details\nEdit Gateway\nDelete Gateway\nDeveloper Documentation\nIoT development for the Senet Network\n\nJoin the Community\nUse theSenet Communityto ask question, read articles, talk to Senet employees and other Portal users.\nDashboard\nThe Dashboard is the main view of the Portal. Users can connect their Devices and Gateways to the Senet Network through a simple registration process. The Dashboard displays high level statistics and RF data to help users monitor their equipment.\nCustomize the Dashboard\nClick on the gearin the top-right corner.\nOptions are displayed to choose a view and toggle Dashboard features.\n\nNote\nWhen the Tile View is selected, theTile Sortingoptions are displayed at the bottom of the Dashboard Settings. When the Table View is selected, rows can be sorted by clicking on the column headers.\nTile View\nChoose theTile Viewin theDashboard Settingsto display each Devices or Gateways in a tile. The tiles show network and configuration data along with a graph to display transaction and RF statistics.\n\nClick on the plus iconabove the tiles to open the registration window shown below.\n\nClick on the Device image to register a Device or the Gateway image to register a Gateway. See theDevice Registrationdocumentation orGateway Registrationdocumentation for step-by-step instructions.\nClick on the menu buttonin the top right corner of the tile. Click on the delete buttonto remove the Device or Gateway. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\n\nTable View\nChoose theTable Viewin theDashboard Settingsto display the Devices and Gateways in separate tables.\n\nClick on the register buttonabove the Device or Gateway table to open the respective registration window. See theDevice Registrationdocumentation or theGateway Registrationdocumentation for step-by-step instructions.\nClick on a row to select a Device or Gateway. Click on the delete buttonto remove the selected item. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\nThere are two options provided for deleting a Device:\nDelete the Device from the Network.\nDelete the Device from the Account only.\nDeleting the Device from the Network removes the Device from the NMS completely. It will not be able to communicate on the Senet Network following the deletion.\nDeleting the Device from the Account leaves the Device in an active state on the Network, but removes it from display in the Developer view. Deleting a Device from an Account also removes any Device specific Notification Targets. Data from the Device will not be forwarded until it is associated with a new Account and Notification Target.\n\nNetwork Delete\n\nAccount Delete\n\nDevice Details\nClick on a Device EUI or Device image in the dashboard to open theDevice Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above allows users to edit their Device, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open theEdit Devicewindow\nSend Downlink\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\nEdit Device\nEdit the Device description, type and notes in the DETAILS tab.\n\nEdit the Device latitude and longitude in the LOCATION tab.\n\nEdit theNotification Targetin the NOTIFICATION TARGET tab.\n\nSelect LoRaWAN Device settings can be overriden in the DEVICE PROFILE tab. These configure the behavior of the Device on the network and do not normally need to be changed. Accordingly, this tab is not visible by default. Check the Device Profile checkbox on the DETAILS tab to display this tab.\n\nThe following table contains the list of LoRaWAN settings that can be set in this tab:\nGateway Details\nClick on a Gateway EUI or Gateway image in the Dashboard to open theGateway Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above displays information and statistics about the Gateway. Click on thebutton to minimize.\nEdit Gateway\nEdit the Gateway installation information.\n\nDelete Gateway\nClick thebutton in the table view or thebutton in the tile view to remove the Gateway. A dialog is shown to confirm the delete request. The dialog includes a checkbox to indicate that the Gateway should also be permanently removed from the network. If the box is not checked, only the user's association to the Gateway is removed.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
343 },
344 {
345 "platform": "Senet",
346 "type": "docs",
347 "source": "https://docs.senetco.io/rp/reports/",
348 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nReports\nDashboard\nTrend Reports\nDevice Trend 30 Days\nTransaction Trend 30 Days\nAvailability Trend 30 Days\nHourly Availability Trend 24 Hours\nAvailability Trend 12 Months\nTrend Report Chart Views\nReports\nReports display high level statistics for Base Stations on the Network. The following reports can be displayed via selection from the list of available reports.\nDashboard\nDevice Trend 30 Days\nTransaction Trend 30 Days\nAvailability Trend 30 Days\nAvailability Trend 12 Months\nHourly Availability Trend 24 Hours\n\nDashboard\nThe Dashboard report shows daily breakdowns of Base Station counts by the following statistics:\nAdmin Status- In Service, Not In Service, Maintenance, or Other\nConnection Status- Contacted, Not Contacted, or Never Contacted\nModel Type- Tektelic Kona 64 Mega, Multitech Conduit, Laird Sentrius, and others\nThe report can be filtered to show Base Station statistics by selected RAN Contract and all Base Stations with a Contract or those without a Contract.\nThe statistics are displayed in stacked column charts with legends listing each statistic and the associated color. The legend items can be clicked to toggle presentation of each statistic, facilitating display of smaller values that may otherwise be hidden.\n\nTrend Reports\nThe following color scheme is used for all trend reports:\nDevice Trend 30 Days\nTheDevice Trendreport shows the number of devices heard by each Base Station over the last 30 days.\nSelectDevice Trend 30 Days\n\nTransaction Trend 30 Days\nTheTransaction Trendreport shows the number of transactions heard by each Base Station over the last 30 days.\nSelectTransaction Trend 30 Days\n\nAvailability Trend 30 Days\nTheAvailability Trendreport shows the daily availability of the Base Station over the last 30 days.\nSelectAvailability Trend 30 Days\n\nHourly Availability Trend 24 Hours\nTheHourly Availability Trend 24 Hoursreport shows the hourly availability of the Base Station over the last 24 hours.\nSelectHourly Availability Trend 24 Hours\n\nAvailability Trend 12 Months\nThe Availability Trend 12 Months report shows the monthly availability of the Base Station over the last 12 months.\nSelectAvailability Trend 12 Months\n\nTrend Report Chart Views\nEach of the trend reports has a Trend Chart buttonthat launches a chart view of the report data. The button is enabled when up to 10 rows are selected in the report table. The button is disabled if no rows are selected or if more than 10 rows are selected. Except for the Availability reports, the chart view can display the data in 2 ways:\nLine\nThe line chart view shows absolute values for Device, Transactions and Availability. Device and Transaction values are counts and Availibilty values are percentages.\n\nStacked Area\nThe stacked area chart view, when available, shows proportionate values of the selected whole. That is, a stacked area chart is analagous to a horizontal pie chart, where each value represents a percentage of the total.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
349 },
350 {
351 "platform": "Senet",
352 "type": "docs",
353 "source": "https://docs.senetco.io/rp/cases/",
354 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nCases\nCreating a case\nClosing a case\nField Descriptions\nCases\nCases provides a mechanism to track operational issues from their initial discovery to their ultimate resolution. Operations support can prioritize cases bases on the level of urgency and view them at a glance in the Cases table view. Once an underlying issue is resolved, the Case can be closed and filtered from the view.\n\nNote\nThe Case table contains a column, Original EUI, that is not shown above. This column shows the EUI of the original Base Station the Case was created for and is set on Case creation. This differs from the Base Station column if the original Base Station was replaced.\nThe Case Details view shows a consolidated view of a specific case. This view is launched by clicking on the title of the case in the Cases table. In this view, a user can see the current status of the case and if there are any comments associated with the case. Comments are added to a Case to track overall progress on the underlying issue or specify action items.\n\nCreating a case\nA Case is created by opening the Create Case dialog from the Cases table. Information about the case such as a title, description, status and priority are entered in this dialog.\n\nAssigning Cases to Users\nCases can be assigned to specific users in the Create or Edit dialogs. An email is sent to the designated user when the Case is assigned.\n\nClosing a case\nOnce the underlying issue for a Case is resolved, the Case is closed using the Case Edit dialog. Some fields shown below are required to close the Case.\n\nField Descriptions\nNote\nThe Dispatch Status, Dispatch Reason, Estimated Cost and Cost fields are only available for Site Cases during Case creation and editing.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
355 },
356 {
357 "platform": "Senet",
358 "type": "docs",
359 "source": "https://docs.senetco.io/docs/faqBasestation/",
360 "content": "Home\nFAQGeneral FAQDevice FAQGateway FAQ\nGeneral FAQ\nDevice FAQ\nGateway FAQ\nReleases\nBase Station FAQ\nFrequently Asked Questions about Base Stations and Base Station software.\nBase Station\nHow do I register a Base Station?\nPlease see theBase Station Registrationpage.\nWhere is the serial number for a MultiTech Conduit?\nThe Serial is printed on the upper left side of the label found on the bottom of the Conduit. The serial number can also be retrieved using the Conduit's CLI.\nIssue the following command from the Conduit's console:\nroot@00-11-22-33-44-55-66-77:~# mts-io-sysfs show device-id12345678\nroot@00-11-22-33-44-55-66-77:~# mts-io-sysfs show device-id12345678\nWhat firewall ports do I need to open for my Base Station?\nBelow are tables of ports used by the Base Station to communicate with the Senet Network, depending on which packet forwarding software is configured.\nSemtech Basic Station will use ports 6042,6044 or 6038,6040, depending on the authentication mode configured.\nHow do I stop or start the Senet Packet Forwarder?\nStop the Senet Packet Forwarder\nConnect to the Base Station through a local console session (or through SSH)\nFrom the home directory, execute the following command to stop the Senet Packet Forwarder./lgwNetwork.shstopIflgwNetwork.shdoes not exist, the Base Station is running an older version of software. From the home directory, execute the following command instead./senetNetwork.shstopThis will stop all running Senet processes and allow for an additional packet forwarder application to run without contention.\nFrom the home directory, execute the following command to stop the Senet Packet Forwarder\n./lgwNetwork.shstop\n./lgwNetwork.shstop\nIflgwNetwork.shdoes not exist, the Base Station is running an older version of software. From the home directory, execute the following command instead\nlgwNetwork.sh\n./senetNetwork.shstop\n./senetNetwork.shstop\nThis will stop all running Senet processes and allow for an additional packet forwarder application to run without contention.\nStart the Senet Packet Forwarder\nConnect to the Base Station through a local console session (or through SSH)\nFrom the home directory, execute the following command to start the Senet Packet Forwarder./lgwNetwork.shstartIflgwNetwork.shdoes not exist, the Base Station is running an older version of software. From the home directory, execute the following command instead./senetNetwork.shstart\nFrom the home directory, execute the following command to start the Senet Packet Forwarder\n./lgwNetwork.shstart\n./lgwNetwork.shstart\nIflgwNetwork.shdoes not exist, the Base Station is running an older version of software. From the home directory, execute the following command instead\nlgwNetwork.sh\n./senetNetwork.shstart\n./senetNetwork.shstart\nHow do I uninstall the Senet Packet Forwarder?\nUninstall Senet Packet Forwarder\nConnect to the Base Station through a local console session (or through SSH)\nNavigate to the following directorycd/opt/bstn/bin\nNavigate to the following directory\ncd/opt/bstn/bin\ncd/opt/bstn/bin\nExecute the following command to uninstall the Senet Packet Forwarder./uninstall.sh\nExecute the following command to uninstall the Senet Packet Forwarder\n./uninstall.sh\n./uninstall.sh\nI updated my Base Station Operating System and I can no longer connect to the Senet Network\nOn some platforms when the Base Station operating system is updated, the update will factory reset the Base Station which will remove the Senet Base Station Software. To re-install the Senet Network Software please follow these steps.\nDelete your Base Station from the dashboard. SeeDashboardfor help deleting a Base Station.\nRegister your Base Station. This will initiate the process to re-register the Base Station on the Senet Network. In the \"Installation Notes\" section please indicate you have updated your OS and need to re-install the Senet Base Station Software.\nInstall the Senet Base Station Software\nInstallation FAQ\nWhat do I do if my install fails?\nIf your installation fails there are a few common things to check.\nOne of the most common issues is the system date and time is not correct. Because of this our installer cannot properly verify the certificate used to download the software.\nCheck the Date by issuing \"date\". The date returned should be today's current date and time.\nIf NTP is running (if not running skip to Manual time sync):\nroot@mtcdt:~# ps -eadf |grep -i ntproot43010Sep07?04:00:18/usr/sbin/ntpd -p /var/run/ntp.pid -g\nroot1905119008012:25pts/000:00:00grep -i ntp\nroot@mtcdt:~#\nroot@mtcdt:~# ps -eadf |grep -i ntproot43010Sep07?04:00:18/usr/sbin/ntpd -p /var/run/ntp.pid -g\nroot1905119008012:25pts/000:00:00grep -i ntp\nroot@mtcdt:~#\nStop the NTP process:\n/etc/init.d/ntpdstop\n/etc/init.d/ntpdstop\nManually sync the time:\nroot@mtcdt:~# ntpdate pool.ntp.org27May16:21:11ntpdate[7278]: steptimeserver64.113.44.54offset-461.417724sec\nroot@mtcdt:~# ntpdate pool.ntp.org27May16:21:11ntpdate[7278]: steptimeserver64.113.44.54offset-461.417724sec\nVerify Date/Time is correct:\nroot@mtcdt:~# dateTues Oct2716:28:34UTC2020root@mtcdt:~#\nroot@mtcdt:~# dateTues Oct2716:28:34UTC2020root@mtcdt:~#\nStart NTP:\nroot@mtcdt:~# /etc/init.d/ntpd start\nroot@mtcdt:~# /etc/init.d/ntpd start\nVerify NTP is running:\nroot@mtcdt:~# ps -eadf |grep -i ntproot43010Sep07?04:00:18/usr/sbin/ntpd -p /var/run/ntp.pid -g\nroot1905119008012:25pts/000:00:00grep -i ntp\nroot@mtcdt:~#\nroot@mtcdt:~# ps -eadf |grep -i ntproot43010Sep07?04:00:18/usr/sbin/ntpd -p /var/run/ntp.pid -g\nroot1905119008012:25pts/000:00:00grep -i ntp\nroot@mtcdt:~#\nSome platforms may require you to have root access to run the installer. If your install fails the installer may indicate this in its error message.\nTo gain root access issue the following command, then re-try the installer\nsudosu\nsudosu\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nFrom here you can search these documents. Enter\n your search terms below."
361 },
362 {
363 "platform": "Senet",
364 "type": "docs",
365 "source": "https://docs.senetco.io/dev/streaming/TagoIO/",
366 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nTagoIO\nPlatform Setup\nNotifier Setup\nTagoIO\nTagoIO (http://tago.io) is an end-to-end cloud platform to connect all your devices, it provides a quick and easy setup with the ability to create your own dashboards to view data in a number of ways like charts, maps, dials, etc.Messages sent from the Senet platform will be forwarded inJSONformat (SeeDefault Data Fields).\nPlatform Setup\nTo get started with TagoIO:\nClick on the Device icon and press the \"Add Device\" button.\n\nSelectLoRaWAN Senetas the Connector.\nLoRaWAN Senet\n\nSearch the list of available device types for the required model.Or selectCustom Senet.\nOr selectCustom Senet.\nCustom Senet\nGive the device a name.\nInput the Device EUI and press \"Create my Device\".\nClick on the device that was just added in the General Information tab, in the Token & Serial Number section.Use the \"Copy Token\" icon to copy the \"Default\" token.\nUse the \"Copy Token\" icon to copy the \"Default\" token.\n- Paste the token into the Device-Token field of the Notification Target in the Senet portal.\nNotifier Setup\nSpecify the Device-Token into the providedNotification Targetfield.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
367 },
368 {
369 "platform": "Senet",
370 "type": "docs",
371 "source": "https://docs.senetco.io/dev/#device-details",
372 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nDeveloper Documentation\nDashboard\nDevice Details\nEdit Device\nGateway Details\nEdit Gateway\nDelete Gateway\nDeveloper Documentation\nIoT development for the Senet Network\n\nJoin the Community\nUse theSenet Communityto ask question, read articles, talk to Senet employees and other Portal users.\nDashboard\nThe Dashboard is the main view of the Portal. Users can connect their Devices and Gateways to the Senet Network through a simple registration process. The Dashboard displays high level statistics and RF data to help users monitor their equipment.\nCustomize the Dashboard\nClick on the gearin the top-right corner.\nOptions are displayed to choose a view and toggle Dashboard features.\n\nNote\nWhen the Tile View is selected, theTile Sortingoptions are displayed at the bottom of the Dashboard Settings. When the Table View is selected, rows can be sorted by clicking on the column headers.\nTile View\nChoose theTile Viewin theDashboard Settingsto display each Devices or Gateways in a tile. The tiles show network and configuration data along with a graph to display transaction and RF statistics.\n\nClick on the plus iconabove the tiles to open the registration window shown below.\n\nClick on the Device image to register a Device or the Gateway image to register a Gateway. See theDevice Registrationdocumentation orGateway Registrationdocumentation for step-by-step instructions.\nClick on the menu buttonin the top right corner of the tile. Click on the delete buttonto remove the Device or Gateway. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\n\nTable View\nChoose theTable Viewin theDashboard Settingsto display the Devices and Gateways in separate tables.\n\nClick on the register buttonabove the Device or Gateway table to open the respective registration window. See theDevice Registrationdocumentation or theGateway Registrationdocumentation for step-by-step instructions.\nClick on a row to select a Device or Gateway. Click on the delete buttonto remove the selected item. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\nThere are two options provided for deleting a Device:\nDelete the Device from the Network.\nDelete the Device from the Account only.\nDeleting the Device from the Network removes the Device from the NMS completely. It will not be able to communicate on the Senet Network following the deletion.\nDeleting the Device from the Account leaves the Device in an active state on the Network, but removes it from display in the Developer view. Deleting a Device from an Account also removes any Device specific Notification Targets. Data from the Device will not be forwarded until it is associated with a new Account and Notification Target.\n\nNetwork Delete\n\nAccount Delete\n\nDevice Details\nClick on a Device EUI or Device image in the dashboard to open theDevice Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above allows users to edit their Device, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open theEdit Devicewindow\nSend Downlink\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\nEdit Device\nEdit the Device description, type and notes in the DETAILS tab.\n\nEdit the Device latitude and longitude in the LOCATION tab.\n\nEdit theNotification Targetin the NOTIFICATION TARGET tab.\n\nSelect LoRaWAN Device settings can be overriden in the DEVICE PROFILE tab. These configure the behavior of the Device on the network and do not normally need to be changed. Accordingly, this tab is not visible by default. Check the Device Profile checkbox on the DETAILS tab to display this tab.\n\nThe following table contains the list of LoRaWAN settings that can be set in this tab:\nGateway Details\nClick on a Gateway EUI or Gateway image in the Dashboard to open theGateway Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above displays information and statistics about the Gateway. Click on thebutton to minimize.\nEdit Gateway\nEdit the Gateway installation information.\n\nDelete Gateway\nClick thebutton in the table view or thebutton in the tile view to remove the Gateway. A dialog is shown to confirm the delete request. The dialog includes a checkbox to indicate that the Gateway should also be permanently removed from the network. If the box is not checked, only the user's association to the Gateway is removed.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
373 },
374 {
375 "platform": "Senet",
376 "type": "docs",
377 "source": "https://docs.senetco.io/dev/streaming/MQTT/",
378 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nMQTT\nDownlink Considerations\nAuthentication and Security\nPlatform Setup\nNotifier Setup\nMQTT\nMQTT is a lightweight messaging protocol where a client can register to send/receive messages on publish/subscribe topics. These messages are forwarded to the users MQTT Broker (server) such as Mosquitto, where the messages can be held until a client requests the messages for a specified topic. The MQTT notifier will register a client to send messages on aPublish Topicand can optionally register to receive Downlink Requests on theSubscribe Topic. The Brokers Address is the IP Address/Hostname of the MQTT Server and the Client ID is an optional field where you can identify the Senet client connection to your MQTT Broker, if no Client ID is specified then the a unique Client ID will be generated. Client IDs should be unique as the broker will disconnect an existing connection when a new connection is initiated with that same client id.\nThe Broker Port should be configured to match the port of your server. Typically, the default port is 1883 or 8883 for TLS.\nUplink messages will be forwarded inJSONformat to thePublish Topic(SeeDefault Data Fields). Publish Topics can be defined using variable substitution to deliver messages to unique destinations based on the message content. A variable is added to the topic string using this format: \"${VARIABLE_NAME}\", where the variable name matches aDefault Data Fieldsname or \"appEui\", the Application EUI of an Application Notifier. Optional and RF data fields may or may not be available for variable substitution depending on the Notfication Target configuration. The Publish Topic is defined during Notification Target setup.\nExample Publish Topics With Variable Substitution:\n/uplink/${devEui}//uplink/${appEui}/{$devEui}/\n/uplink/${devEui}//uplink/${appEui}/{$devEui}/\nUsers have the ability using external tools to send/publish Downlink messages to this notifier'sSubscriber Topic, the Senet Client can process these messages provided they are delivered in the followingJSONformat:\nDownlink Message Format\n{\n \"eui\":\"FFFFFFFFFFFFFFFF\",\n \"pdu\":\"0123456789ABCDEF\"}\n{\n \"eui\":\"FFFFFFFFFFFFFFFF\",\n \"pdu\":\"0123456789ABCDEF\"}\nDownlink Message Format with optional fields\n{\n \"eui\":\"FFFFFFFFFFFFFFFF\",\n \"pdu\":\"0123456789ABCDEF\",\n \"port\":0,\n \"timeout\":5,\n \"confirmed\":false}\n{\n \"eui\":\"FFFFFFFFFFFFFFFF\",\n \"pdu\":\"0123456789ABCDEF\",\n \"port\":0,\n \"timeout\":5,\n \"confirmed\":false}\nNote: Downlink messages will only be processed if the EUI specified is registered with the Senet Development Portal.\nThe Senet Client uses the following QoS levels for the Publish and Subscriber topics:\nPublish Topic = At Most Once(0)Subscribe Topic = Exactly Once(2)\nPublish Topic = At Most Once(0)Subscribe Topic = Exactly Once(2)\nDownlink Considerations\nUsers must publish downlinks with a QoS level of 2. This allows the messages to remain on the user's server until the Senet client connects.\nThe Client ID must be specified so the broker knows which messages need to be delivered the next time the client connects.\nThePublish TopicandSubscribe Topicmust be different.\nAuthentication and Security\nAuthentication is supported with an optional username and password. The user must configure their broker/server for username and password authentication.\nSecurity is supported with a trust manager that accepts any valid certificate. The SSL/TLS checkbox will enable SSL/TLS communication.\nPlatform Setup\nImplementation specific.\nNotifier Setup\nSpecify the Brokers IP Address and Publish Topic in theNotification Targetfields. The Subscribe Topic is only required if you are going to be processing downlinks. The Client ID is also optional and only required if your broker requires a specific Client ID.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
379 },
380 {
381 "platform": "Senet",
382 "type": "docs",
383 "source": "https://docs.senetco.io/rp/#getting-started",
384 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nRAN Provider Documentation\nGetting Started\nUser Interface\nRAN Provider Documentation\nRegister and manage LoRaWAN Base Stations on the Senet Network. RAN (Radio Access Network) Provider Base Stations generate revenue based on the number of qualified messages that used the Radio Access Network.\nGetting Started\nLearn how toRegister a Base Station.\nLearn how toRegister a Base Station.\nLearn how toInstall the Senet Packet Forwarder.\nLearn how toInstall the Senet Packet Forwarder.\nLearn how toCustomize and Navigate the Dashboard.\nLearn how toCustomize and Navigate the Dashboard.\nUser Interface\nBase Stations\nThe main landing page will allow a RAN provider to provision and deploy their own RAN provided Base Stations. When a new Base Station is registered to the network the RAN provider can modify Base Station's channel plan, view Base Station details, RF statistics, performance, and much more.\nBase Station Details Summary\nIn Details Summary view a RAN provider is able to view number of heard devices, transactions, Ethernet/Cell stats, network round trip time, and CPU/Memory statistics over the course of a given time period. The RAN provider is also able to view uptime and other critical statistics to monitor the Base Station's health over time.\nBase Station Events\nThe events view helps a RAN provider view the traffic and device's that are flowing through their Base Station. These events show a devices EUI, RF statistics and other important information.\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nBase Station RF Statistics\nIf you are looking for RF statistics, this view will show you the Base Station receive and transmit statistics over time with a heat map for all channels and frequencies.\nBase Station Stats\nThe Statistics page shows how a Base Station is performing over a daily, monthly or lifetime with view in to uplinks, downlinks (both foreign and local), average transaction and average device counts.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
385 },
386 {
387 "platform": "Senet",
388 "type": "docs",
389 "source": "https://docs.senetco.io/ap/#devices",
390 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
391 },
392 {
393 "platform": "Senet",
394 "type": "docs",
395 "source": "https://docs.senetco.io/dev/streaming/Ginjer/",
396 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nGinjer\nPlatform Setup\nNotifier Setup\nGinjer\nThe Ginjer IoT Analytics Platform (https://senraco.com/index.php/ginjer/) introduces a new low cost approach in deploying IoT solutions. Ginjer accelerates business decision making with powerful reporting tools and real-time data visualization. Coupled with customizable device clusters, device management capabilities, and user access management features, companies can now deploy end-to-end solutions in a reduced amount of time.\nPlatform Setup\nTo get started leveraging Ginger, you first need to set up a Ginjer account (https://www.ginjer.io/home/signIn)\n\nOnce the account is created, follow the instructions found at (https://docs.ginjer.io/) to set up Ginjer integration. Once that is complete an authorization key will be needed to foward data to the platform. Instructions for creating an authorization key are found at (https://docs.ginjer.io/#configuringexistingnetworks)\nNotifier Setup\nUse the Authorization Key provided by SenRa and enter it into the provided Authorization key field shown here:\n\nSeeNotification Targetsfor more information on Nofification Target options.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
397 },
398 {
399 "platform": "Senet",
400 "type": "docs",
401 "source": "https://docs.senetco.io/ap/mcastViews/",
402 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nMulticast Group Details\nDetails Panel\nDevices\nEvents\nDevice Multicast Setup Events\nMulticast Group Downlink Events\nMulticast Group Details\nThe Multicast Group Details view provides a series of sub-views that are scoped to a specific Multicast Group.\nClick on the header buttons to select the sub-view.\nEvents:The Events tab that displays either the Multicast Group Downlink Events or the Device Multicast Setup Events.\nDevices:The current Device list for the Multicast Group if it's still open or the list of Devices at the time the Multicast Group completed.\nDetails Panel\nThe Details Panel displays Multicast Group metadata. Click on thebutton to hide or show the panel.\n\nDevices\nThis view displays the list of Devices that are part of this Multicast Group and their current state within that group. If the Multicast Group could not be provisioned onto the Device the state and details should give some details to help diagnose why.\n\nEvents\nDevice Multicast Setup Events\nThis view is used to show the LoRa events used to configure the devices in this group to know about the Multicast Group.\n\nMulticast Group Downlink Events\nThis view is used to show the Downlinks sent to this Multicast Group from the network server. This does not display any device to device communication.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
403 },
404 {
405 "platform": "Senet",
406 "type": "docs",
407 "source": "https://docs.senetco.io/dev/streaming/ThingSpeak/",
408 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nThingSpeak\nPlatform Setup\nNotifier Setup\nThingSpeak\nDevices registered on the Senet Development Portal can be configured to forward sensor data to a ThingSpeak (www.thingspeak.com) Channel. Before configuring your notification target, you must create a Channel within your ThingSpeak account and define the number of fields that will be forwarded. If your device does not implement the Senet Packet Format then only one field need be enabled and the message PDU or payload will be forwarded as \"Field 1\". If your device implements the Senet Packet Format then the message PDU will be decoded and sensor values forwarded in \"Field 2-6\". The Senet Packet Format supports multiple sensor data points in a single message PDU so make sure that you have configured the appropriate number of fields. If there are not enough fields configured on your ThingSpeak Channel then the update will fail. The example below implements two sensor values, Tank Level & Temperature.\n\nPlatform Setup\nLogin to the ThingSpeak platform, select the \"New Channel\" button to view the Channel Settings page. Specify the name of your channel and provide a description. Enable as many fields as supported by your device providing descriptive names for each. Note: The PDU will always be forwarded in Field1. Click on the API Keys table, view the read/write api keys for this channel. The Write API Key will be needed when setting up the notification target.\nNotifier Setup\nSpecify the \"Write API Key\" into the \"API KEY\" field of theNotification Target.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
409 },
410 {
411 "platform": "Senet",
412 "type": "docs",
413 "source": "https://portal.senetco.io",
414 "content": "\n\n\nNumber of attempts exceededPlease contactsupportfor help\n\nNumber of attempts exceededPlease contactsupportfor help\nYour password has expired, please enter a new one.\n\n\nA text message with an authentication code was sent to your phone. Please enter the code above to login.\n\n\nConfirmation Email Sent!\nYou must confirm your email before you can login for\n the first time. Thanks for choosing Senet!\nUnited States+1\nUnited Kingdom+44\n\nAfghanistan (افغانستان)+93\nAlbania (Shqipëri)+355\nAlgeria (الجزائر)+213\nAmerican Samoa+1684\nAndorra+376\nAngola+244\nAnguilla+1264\nAntigua and Barbuda+1268\nArgentina+54\nArmenia (Հայաստան)+374\nAruba+297\nAustralia+61\nAustria (Österreich)+43\nAzerbaijan (Azərbaycan)+994\nBahamas+1242\nBahrain (البحرين)+973\nBangladesh (বাংলাদেশ)+880\nBarbados+1246\nBelarus (Беларусь)+375\nBelgium (België)+32\nBelize+501\nBenin (Bénin)+229\nBermuda+1441\nBhutan (འབྲུག)+975\nBolivia+591\nBosnia and Herzegovina (Босна и Херцеговина)+387\nBotswana+267\nBrazil (Brasil)+55\nBritish Indian Ocean Territory+246\nBritish Virgin Islands+1284\nBrunei+673\nBulgaria (България)+359\nBurkina Faso+226\nBurundi (Uburundi)+257\nCambodia (កម្ពុជា)+855\nCameroon (Cameroun)+237\nCanada+1\nCape Verde (Kabu Verdi)+238\nCaribbean Netherlands+599\nCayman Islands+1345\nCentral African Republic (République centrafricaine)+236\nChad (Tchad)+235\nChile+56\nChina (中国)+86\nChristmas Island+61\nCocos (Keeling) Islands+61\nColombia+57\nComoros (جزر القمر)+269\nCongo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)+243\nCongo (Republic) (Congo-Brazzaville)+242\nCook Islands+682\nCosta Rica+506\nCôte d’Ivoire+225\nCroatia (Hrvatska)+385\nCuba+53\nCuraçao+599\nCyprus (Κύπρος)+357\nCzech Republic (Česká republika)+420\nDenmark (Danmark)+45\nDjibouti+253\nDominica+1767\nDominican Republic (República Dominicana)+1\nEcuador+593\nEgypt (مصر)+20\nEl Salvador+503\nEquatorial Guinea (Guinea Ecuatorial)+240\nEritrea+291\nEstonia (Eesti)+372\nEthiopia+251\nFalkland Islands (Islas Malvinas)+500\nFaroe Islands (Føroyar)+298\nFiji+679\nFinland (Suomi)+358\nFrance+33\nFrench Guiana (Guyane française)+594\nFrench Polynesia (Polynésie française)+689\nGabon+241\nGambia+220\nGeorgia (საქართველო)+995\nGermany (Deutschland)+49\nGhana (Gaana)+233\nGibraltar+350\nGreece (Ελλάδα)+30\nGreenland (Kalaallit Nunaat)+299\nGrenada+1473\nGuadeloupe+590\nGuam+1671\nGuatemala+502\nGuernsey+44\nGuinea (Guinée)+224\nGuinea-Bissau (Guiné Bissau)+245\nGuyana+592\nHaiti+509\nHonduras+504\nHong Kong (香港)+852\nHungary (Magyarország)+36\nIceland (Ísland)+354\nIndia (भारत)+91\nIndonesia+62\nIran (ایران)+98\nIraq (العراق)+964\nIreland+353\nIsle of Man+44\nIsrael (ישראל)+972\nItaly (Italia)+39\nJamaica+1\nJapan (日本)+81\nJersey+44\nJordan (الأردن)+962\nKazakhstan (Казахстан)+7\nKenya+254\nKiribati+686\nKosovo+383\nKuwait (الكويت)+965\nKyrgyzstan (Кыргызстан)+996\nLaos (ລາວ)+856\nLatvia (Latvija)+371\nLebanon (لبنان)+961\nLesotho+266\nLiberia+231\nLibya (ليبيا)+218\nLiechtenstein+423\nLithuania (Lietuva)+370\nLuxembourg+352\nMacau (澳門)+853\nMacedonia (FYROM) (Македонија)+389\nMadagascar (Madagasikara)+261\nMalawi+265\nMalaysia+60\nMaldives+960\nMali+223\nMalta+356\nMarshall Islands+692\nMartinique+596\nMauritania (موريتانيا)+222\nMauritius (Moris)+230\nMayotte+262\nMexico (México)+52\nMicronesia+691\nMoldova (Republica Moldova)+373\nMonaco+377\nMongolia (Монгол)+976\nMontenegro (Crna Gora)+382\nMontserrat+1664\nMorocco (المغرب)+212\nMozambique (Moçambique)+258\nMyanmar (Burma) (မြန်မာ)+95\nNamibia (Namibië)+264\nNauru+674\nNepal (नेपाल)+977\nNetherlands (Nederland)+31\nNew Caledonia (Nouvelle-Calédonie)+687\nNew Zealand+64\nNicaragua+505\nNiger (Nijar)+227\nNigeria+234\nNiue+683\nNorfolk Island+672\nNorth Korea (조선 민주주의 인민 공화국)+850\nNorthern Mariana Islands+1670\nNorway (Norge)+47\nOman (عُمان)+968\nPakistan (پاکستان)+92\nPalau+680\nPalestine (فلسطين)+970\nPanama (Panamá)+507\nPapua New Guinea+675\nParaguay+595\nPeru (Perú)+51\nPhilippines+63\nPoland (Polska)+48\nPortugal+351\nPuerto Rico+1\nQatar (قطر)+974\nRéunion (La Réunion)+262\nRomania (România)+40\nRussia (Россия)+7\nRwanda+250\nSaint Barthélemy+590\nSaint Helena+290\nSaint Kitts and Nevis+1869\nSaint Lucia+1758\nSaint Martin (Saint-Martin (partie française))+590\nSaint Pierre and Miquelon (Saint-Pierre-et-Miquelon)+508\nSaint Vincent and the Grenadines+1784\nSamoa+685\nSan Marino+378\nSão Tomé and Príncipe (São Tomé e Príncipe)+239\nSaudi Arabia (المملكة العربية السعودية)+966\nSenegal (Sénégal)+221\nSerbia (Србија)+381\nSeychelles+248\nSierra Leone+232\nSingapore+65\nSint Maarten+1721\nSlovakia (Slovensko)+421\nSlovenia (Slovenija)+386\nSolomon Islands+677\nSomalia (Soomaaliya)+252\nSouth Africa+27\nSouth Korea (대한민국)+82\nSouth Sudan (جنوب السودان)+211\nSpain (España)+34\nSri Lanka (ශ්රී ලංකාව)+94\nSudan (السودان)+249\nSuriname+597\nSvalbard and Jan Mayen+47\nSwaziland+268\nSweden (Sverige)+46\nSwitzerland (Schweiz)+41\nSyria (سوريا)+963\nTaiwan (台灣)+886\nTajikistan+992\nTanzania+255\nThailand (ไทย)+66\nTimor-Leste+670\nTogo+228\nTokelau+690\nTonga+676\nTrinidad and Tobago+1868\nTunisia (تونس)+216\nTurkey (Türkiye)+90\nTurkmenistan+993\nTurks and Caicos Islands+1649\nTuvalu+688\nU.S. Virgin Islands+1340\nUganda+256\nUkraine (Україна)+380\nUnited Arab Emirates (الإمارات العربية المتحدة)+971\nUnited Kingdom+44\nUnited States+1\nUruguay+598\nUzbekistan (Oʻzbekiston)+998\nVanuatu+678\nVatican City (Città del Vaticano)+39\nVenezuela+58\nVietnam (Việt Nam)+84\nWallis and Futuna (Wallis-et-Futuna)+681\nWestern Sahara (الصحراء الغربية)+212\nYemen (اليمن)+967\nZambia+260\nZimbabwe+263\nÅland Islands+358"
415 },
416 {
417 "platform": "Senet",
418 "type": "docs",
419 "source": "https://docs.senetco.io/ap/jsDetails/",
420 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nJoin Servers Table\nJoin Server Details\nDetails Panel\nDashboard\nJoin Server Events\nSystem Events\nDevice Management Events\nDevice Management\nJoin Servers Table\nThis view contains a table of all available Join Servers. When created and shared by Operators other than the Application Provider's, Join Servers are presented as belonging to a generic \"System\" Account to indicate their broader visibility.\nDevices are registered to an Application under one of its associated Join Server(s), responsible for facilitating their connection to the network. TheJoin Server Details Viewwill launch by clicking any Join Server EUI link listed in the table.\n\nJoin Server Details\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View Join Server LoRa Events, System Events, and Device Management Events\nDevice Management:Registered, Activated and Deactivated Devices\nDetails Panel\nThe Details Panel displays Join Server metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows Join Server specific statistics directly associated with the Join Server including Join Success, Join Error and Join Ignored counts. Values are updated every 15 minutes.\n\nJoin Server Events\nThe Join Server Events view provides a consolidated view of the LoRa events associated with the Join Server events. Like other event views, the Join Server Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\nApplication Events that may be related to the Join Sever are not displayed here. This prevents potential exposure of Events or sensitive data from un-owned Applications that may share the Join Server. Instead, searches for Application Events should occur within theApplication Eventsview.\n\nSystem Events\nSystem events are system level events for the Join Server. This table allows you to navigate these events to help troubleshoot issues with the Join Server.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nGenerated by Device management changes, these audit events contain details including the time of the change(s), which Devices were affected (Ids), who performed the changes (Username), and how (e.g., API Authentication). Changes occur in batches of up to 500 devices so several events may be generated from a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevice Management\nThe Join Server Device Management view shows Device onboarding data for the Join Server's associated Applications. In the same way theApplication's Device Management viewscopes Devices to the selected Join Server, this view scopes them to the selected Application. Similarly, Device onboarding may be performed from this view. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
421 },
422 {
423 "platform": "Senet",
424 "type": "docs",
425 "source": "https://docs.senetco.io/dev/dev/#device-registration",
426 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nDevices\nDevice Registration\nDevice Registration - OTAA\nDevice Registration - ABP\nDevice Keys\nSenet Packet Format\nDevice Configuration\nDevices\nManage and monitor LoRa enabled Devices on the Senet Network\nDevice Registration\nOpen the Device registration window.Table View: Click on the add buttonabove the Devices table.Tile View: Click on the add buttonabove the tiles and then click Register Device.\nOpen the Device registration window.\nTable View: Click on the add buttonabove the Devices table.\nTable View: Click on the add buttonabove the Devices table.\nTile View: Click on the add buttonabove the tiles and then click Register Device.\nTile View: Click on the add buttonabove the tiles and then click Register Device.\nFind the assigned EUI of the Device being registered and enter the 16 hexadecimal characters in theDevice EUIfield.NoteIf the Device does not have an assigned EUI, one can be obtained by pressing theSenet's EUI Registrylink. A unique EUI from Senet will be provided .\nFind the assigned EUI of the Device being registered and enter the 16 hexadecimal characters in theDevice EUIfield.\nNote\nIf the Device does not have an assigned EUI, one can be obtained by pressing theSenet's EUI Registrylink. A unique EUI from Senet will be provided .\nChoose the appropriateActivation Typefor the Device.OTAA (Over-The-Air Activation)Over The Air Activation will provide the application key (AppKey) to provision the Device.ABP (Activation By Personalization)Activation By Personalization will provide the Device address (DevAddr), network session key (NwkSKey), and application session key (AppSKey) to provision the Device.\nChoose the appropriateActivation Typefor the Device.\nOTAA (Over-The-Air Activation)Over The Air Activation will provide the application key (AppKey) to provision the Device.\nOTAA (Over-The-Air Activation)\nOver The Air Activation will provide the application key (AppKey) to provision the Device.\n\nABP (Activation By Personalization)Activation By Personalization will provide the Device address (DevAddr), network session key (NwkSKey), and application session key (AppSKey) to provision the Device.\nABP (Activation By Personalization)\nActivation By Personalization will provide the Device address (DevAddr), network session key (NwkSKey), and application session key (AppSKey) to provision the Device.\n\nDevice Registration - OTAA\nCustom OTAA Registration\nIf the Device uses a custom Application Key and Join Server, use this registration method.\nEnter the EUI of the Device or obtain a Device EUI from Senet's EUI Registry.\nEnter the EUI of the Device or obtain a Device EUI from Senet's EUI Registry.\nEnter the custom Join Server EUI address in theJoin EUIfield.\nEnter the custom Join Server EUI address in theJoin EUIfield.\nEnter the custom Application Key in theApplication Keyfield.\nEnter the custom Application Key in theApplication Keyfield.\n(Optional) Enter aDescriptionfor the Device.\n(Optional) Enter aDescriptionfor the Device.\nSelect theDevice Type(default type isOther).\nSelect theDevice Type(default type isOther).\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\n(Optional) Add applicableDevice Notes.\n(Optional) Add applicableDevice Notes.\nClickRegister New Devicewhen complete.\nClickRegister New Devicewhen complete.\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.OTAA (Over-The-Air Activation Custom Keys)\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.\nOTAA (Over-The-Air Activation Custom Keys)\n\nSenet OTAA Registration\nSelect the Senet Allocated Join Information Checkbox to enable this registration mode. This will automatically provide the Join Server EUI and Application Key for the Device.\nSelect the Senet Allocated Join Information Checkbox to enable this registration mode. This will automatically provide the Join Server EUI and Application Key for the Device.\n(Optional) Enter aDescriptionfor the Device.\n(Optional) Enter aDescriptionfor the Device.\nSelect theDevice Type(default type isOther).\nSelect theDevice Type(default type isOther).\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\n(Optional) Add applicableDevice Notes.\n(Optional) Add applicableDevice Notes.\nClickRegister New Devicewhen complete.\nClickRegister New Devicewhen complete.\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.OTAA (Over-The-Air Activation)\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.\nOTAA (Over-The-Air Activation)\nOTAA (Over-The-Air Activation)\n\nDevice Registration - ABP\nCustom ABP Registration\nIf the Device uses a custom Application Session Key, Network Session Key, and Device Address, use this registration method.\nEnter the EUI of the Device or obtain a Device EUI from Senet's EUI Registry.\nEnter the EUI of the Device or obtain a Device EUI from Senet's EUI Registry.\nEnter the custom Device Address address in theDevice Addressfield. Note: Only NetIDs of 0 or 1 are supported.\nEnter the custom Device Address address in theDevice Addressfield. Note: Only NetIDs of 0 or 1 are supported.\nEnter the custom Application Session Key in theApplication Session Keyfield.\nEnter the custom Application Session Key in theApplication Session Keyfield.\nEnter the custom Network Session Key in theNetwork Session Keyfield.\nEnter the custom Network Session Key in theNetwork Session Keyfield.\n(Optional) Enter aDescriptionfor the Device.\n(Optional) Enter aDescriptionfor the Device.\nSelect theDevice Type(default type isOther).\nSelect theDevice Type(default type isOther).\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\n(Optional) Add applicableDevice Notes.\n(Optional) Add applicableDevice Notes.\nClickRegister New Devicewhen complete.\nClickRegister New Devicewhen complete.\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.ABP (Activation By Personalization - Custom)\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.\nABP (Activation By Personalization - Custom)\nABP (Activation By Personalization - Custom)\n\nSenet ABP Registration\nSelect the Senet Allocated Join Information Checkbox to enable this registration mode. This will automatically generate the Device Address, Application Session Key, and Network Session Key for the Device.\nSelect the Senet Allocated Join Information Checkbox to enable this registration mode. This will automatically generate the Device Address, Application Session Key, and Network Session Key for the Device.\n(Optional) Enter aDescriptionfor the Device.\n(Optional) Enter aDescriptionfor the Device.\nSelect theDevice Type(default type isOther).\nSelect theDevice Type(default type isOther).\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\nClick theSupports Senet Packetcheck-box if the Device supports theSenet Packet Format.\n(Optional) Add applicableDevice Notes.\n(Optional) Add applicableDevice Notes.\nClickRegister New Devicewhen complete.\nClickRegister New Devicewhen complete.\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.ABP (Activation By Personalization)\nWhen the Device has successfully registered, the information used to provision the Device will be displayed.\nABP (Activation By Personalization)\nABP (Activation By Personalization)\n\nDevice Keys\nThe Application Key (AppKey) is an AES 128-bit key specific to a Device. The AppKey is used to derive the session keys (NwkSKey and AppSKey) used to encrypt and verify LoRaWAN™ communication and application data.\nOpen theEdit Devicewindow.Table View: Select a row in the Device table. Click on the edit button.Tile View: Click on the menu button. Click on the edit button.Device Details: Click on the edit button.\nOpen theEdit Devicewindow.\nTable View: Select a row in the Device table. Click on the edit button.\nTable View: Select a row in the Device table. Click on the edit button.\nTile View: Click on the menu button. Click on the edit button.\nTile View: Click on the menu button. Click on the edit button.\nDevice Details: Click on the edit button.\nDevice Details: Click on the edit button.\nClick on the Key buttonto display the Device keys.ABP (Activation By Personalization)OTAA (Over-The-Air Activation)\nClick on the Key buttonto display the Device keys.\nABP (Activation By Personalization)\nABP (Activation By Personalization)\n\nOTAA (Over-The-Air Activation)\nOTAA (Over-The-Air Activation)\n\nSenet Packet Format\nA straight-forward, network API for any End Device Application that utilizes LoRaWAN™ communication.\nDesigned to be extensible for End Devices with multiple sensors and variable application requirements. Each facet of operation has a corresponding packet type, and these in turn provide secure, ‘on demand’ access to the End Device via typed downlinks.\nOperational Status may be solicited:Battery LevelGeo-Location Data (future)RF TX & RX CharacteristicsFirmware & Hardware RevisionsBoot & Reset Event Counts with Reason Code\nBattery Level\nGeo-Location Data (future)\nRF TX & RX Characteristics\nFirmware & Hardware Revisions\nBoot & Reset Event Counts with Reason Code\nBehaviors may be controlled:Transmit IntervalChannel Plan toggle between 8 and 64-Channel operation (LoRaWAN™ shortcut)\nTransmit Interval\nChannel Plan toggle between 8 and 64-Channel operation (LoRaWAN™ shortcut)\n\nAll multi-byte words are encoded MSB..LSB (network-byte-order)\nVer [0..7]Senet Protocol Version: 1\nVer [0..7]\nPtype [8]Fragmented packet (fragment field present when set)\nPtype [8]\nPtype [9..15]Packet Type (128 values)\nPtype [9..15]\nFrag [16..31]Optional control field - present when bit [8] is 1\nFrag [16..31]\nType [0..7]Describes the type of value following (0..255)\nType [0..7]\nValue [8..23]The value described by Type (0..65535)\nValue [8..23]\n\nData Rate Reference Table:\n\nSenet also offers decoding of the app payload if the Device implements the standard Senet Packet Format. If the \"Supports Senet Packet\" box is checked on the Device Details Edit Dialog then the following optionalJSONfields will be appended to the message.\nFields\nDevice Configuration\nMultiTech xDot\nRegister the Device in the Portal by following theDevice Registrationprocedure.The Device EUI should be located on the Device. Look for characters in the format similar to:NODE: 0080000000XXXXXX\nRegister the Device in the Portal by following theDevice Registrationprocedure.\nThe Device EUI should be located on the Device. Look for characters in the format similar to:NODE: 0080000000XXXXXX\nNODE: 0080000000XXXXXX\nObtain the App key displayed at the end of the registration process.NoteThe App key is ONLY displayed during the registration process.\nObtain the App key displayed at the end of the registration process.\nNote\nThe App key is ONLY displayed during the registration process.\nConfigure the xDot Device to connect to the Senet Network with the following AT commands:Configure for Public Network\nAT+PN=1\n\nConfigure Frequency Sub-band (1:902.3-903.7, 2:903.9-905.3,..., 8:913.5-914.9)\nAT+FSB=1 (note: in areas where there are 64-channel GWs, better touseFSB=0)Setyour App EUItothe Senet Developer Application EUIAT+NI=0,00:25:0C:00:00:01:00:01SetApplicationKey(fromthe Developer Portal Device Setup window - thisisuniqueper Device)AT+NK=0,<APP-KEY>SettransmitdatarateAT+TXDR=10SettransmitpowerAT+TXP=20Setantenna gainAT+ANT=0SetOver-The-AirJoinmodeAT+NJM=1Save configurationAT&WViewconfigurationAT&VFornewer xDots, also needtoadd:SettheJoinDelayto5secondsAT+JD=5\nConfigure the xDot Device to connect to the Senet Network with the following AT commands:\nConfigure for Public Network\nAT+PN=1\n\nConfigure Frequency Sub-band (1:902.3-903.7, 2:903.9-905.3,..., 8:913.5-914.9)\nAT+FSB=1 (note: in areas where there are 64-channel GWs, better touseFSB=0)Setyour App EUItothe Senet Developer Application EUIAT+NI=0,00:25:0C:00:00:01:00:01SetApplicationKey(fromthe Developer Portal Device Setup window - thisisuniqueper Device)AT+NK=0,<APP-KEY>SettransmitdatarateAT+TXDR=10SettransmitpowerAT+TXP=20Setantenna gainAT+ANT=0SetOver-The-AirJoinmodeAT+NJM=1Save configurationAT&WViewconfigurationAT&VFornewer xDots, also needtoadd:SettheJoinDelayto5secondsAT+JD=5\nConfigure for Public Network\nAT+PN=1\n\nConfigure Frequency Sub-band (1:902.3-903.7, 2:903.9-905.3,..., 8:913.5-914.9)\nAT+FSB=1 (note: in areas where there are 64-channel GWs, better touseFSB=0)Setyour App EUItothe Senet Developer Application EUIAT+NI=0,00:25:0C:00:00:01:00:01SetApplicationKey(fromthe Developer Portal Device Setup window - thisisuniqueper Device)AT+NK=0,<APP-KEY>SettransmitdatarateAT+TXDR=10SettransmitpowerAT+TXP=20Setantenna gainAT+ANT=0SetOver-The-AirJoinmodeAT+NJM=1Save configurationAT&WViewconfigurationAT&VFornewer xDots, also needtoadd:SettheJoinDelayto5secondsAT+JD=5\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
427 },
428 {
429 "platform": "Senet",
430 "type": "docs",
431 "source": "https://docs.senetco.io/ap/#device-management-events",
432 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
433 },
434 {
435 "platform": "Senet",
436 "type": "docs",
437 "source": "https://docs.senetco.io/rp/gwReg/#supported-base-stations",
438 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nBase Stations\nIntegration Overview\nSupported Base Stations\nBase Station Registration\nBase Stations\nIntegration Overview\nIn order to integrate your Base Station with Senet's Network, it must be on-boarded. This process involves:\nRegistration.\nRegistration.\nInstallation & configuration of a supported packet forwarder.\nInstallation & configuration of a supported packet forwarder.\nOnce registration is complete your Base Station's packet forwarder will communicate with Senet's network.\nSenet Packet Forwarder for RAN providers\nThis integration option is applicable to Radio Access Network (RAN) Providers deploying Base Stations at scale. This option increases security over the standard Senet Packet Forwarder, which includes restricting local user accounts and preventing remote access.\nNote\nBase Station Registration and Software Installation is only required for devices that are new to the Senet Network. If Senet provided the Base Station, no further action is necessary.\nSupported Base Stations\nFor a list of supported Base Stations please see theBase Stations Softwaredocumentation.\nBase Station Registration\nRegistration for RAN Providers\nLog into the Portal with your RAN Provider account.\nFrom the landing page click the + button to add a new Base Station.\nYou will be presented with a Create Base Station window.\nSelect the Model type of the Base Station to connect to the network.\nInput the serial number for the Base Station. For more information on how to obtain the serial number and the proper format pleases see the Base Station specific documentation.\nAllocate an EUI for the Base Station to be used. If the Base Station does not have an EUI (most common) click the button to allocate an EUI from Senet's EUI registry.\nConfirm EUI Allocation\nOptionally set a name for the Base Station.\nOptionally set the Admin Status for the Base Station.\nSelect the channel plan to be used for this Base Station. Default is US Channel Plan.\nSelect the RX channels to be used, this should be properly defaulted. It is not recommended to change these values.\nAdvanced - Set a Channel Mask to disable specific channels.\nOptionally set the Alert Level for the Base Station.\nSelect the type of Base Station being added to the network.\nFill in the installation info for where and how the Base Station will be installed\nIf you do not know the GPS coordinates of the Base Station, click the button to automatically geo-locate the coordinates based on the earlier provided address.\nClick Save, once complete your Base Station will be added to the table.\nIf you have not done so, install the RAN provider software on the Base Station. The install instructions can be found in the Base Station specific documentation.\nWhen the Base Station is online with the software properly installed and talking to the network, you will see a green status indicator.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
439 },
440 {
441 "platform": "Senet",
442 "type": "docs",
443 "source": "https://docs.senetco.io/rp/adminConfigHistory/",
444 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nConfiguration History\nConfiguration History Filtering\nConfiguration History\nThe Configuration History view shows an audit of Collection object changes made by all users of the Portal. Collections are the abstract models of the objects that make up the LoRa network. This view assists in identifying potential root causes of network disruption stemming from configuration changes and can help identify responsible parties.\n\nConfiguration History Filtering\nThe Configuration History view includes a drop-down filter to show specific categories of configuration changes. These categories are listed in the filter and defined below.\n\nNote\nThe User filter is only available to the RAN Provider Admin user role.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
445 },
446 {
447 "platform": "Senet",
448 "type": "docs",
449 "source": "https://docs.senetco.io/rp/planningmap/",
450 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nPlanning Maps\nCreating Planning Maps\nPlanning Map Fields\nExporting Planning Maps\nPlanning Map Marker Images\nManaging Planning Maps\nBase Station Deployment Planning\nCoverage Tool\nCoverage Layer\nSenet LVN Coverage and Helium Hotspot Layers\nPath Quality\nLVN Base Station Filtering\nProposed Entries Export\nPlanning Maps\nThe mapping feature is used to interact with customer planning maps as well as to view Base Station viewsheds and end points statistics.\nPlanning maps can be used to create proposed Base Stations and end points and are useful to visually identify expected coverage areas as well as calculating the predicted path quality for end points from the Base Stations modeled in the area.\n\nReset the map center and zoom\nRefresh the contents of the map\nCoverage:Show the map Coverage tool\nMap Planning:Create, open or manage maps\nCreating Planning Maps\n1. To create a map, select Create Planning Map from the Map Option button menu. This action will open a create planning maps form.\n\n2. Enter a map name.\n\nNote\nSelectingopens a dialog that displays the valid columns for the planning map. A planning map consists of multiple columns of data including latitude and longitude location information in the decimal degrees format, ex. 42.8334, -106.35946.\nThe required columns for Base Stations are latitude, longitude, type, radius and height. These values are used to create a Base Station viewshed on the map.\nThe minimum required columns for end points are latitude and longitude only. Planning maps are saved in CSV file format.\n\n\nNote\nBy selecting the “Calculate Path Quality” entry, a path quality analysis with be performed for each endpoint location based on the projected viewshed of Base Stations in the area. Base Stations and proposed Base Stations in the imported file contribute to the path quality calculation. ThePath Quality Settingsfor the calculation can be configured here.\n\n\n3. Selectingwill open the local computer file explorer to select the desired planning map that has previously been created. For this example, the file “Customer_Location_mapversion” was selected. Click the “Import” button to import the planning map into the mapping tool.\n4. Selecting “Show Map” results in the mapped objects being displayed on the planning map location. This encompasses all the end point pin locations in the respective view.\n\n\nPlanning Map Fields\nExporting Planning Maps\nPlanning Maps can be exported through the Planning Maps table. Simply select on a row by selecting on the name field. Then click the exportbutton. This exports a map in the same format that it was imported so that it can be shared or re-imported. As part of the export, the best 3 Base Stations that contributed to the last Planning Map path quality calculation are included for each entry. This provides the path quality, distance, height, and Azimuth that was measured for that Base Station when compared to that map entry.\nPlanning Map Marker Images\nManaging Planning Maps\nSelecting “Manage Planning Maps” displays the planning maps summary table below.\n\n\nThe map provides the ability to quickly measure the distance between two points on the map. Click thebutton and then select \"Measure Distance\" from the menu to enable the feature.\n\nThen select two points on the map and see the distance in miles between them. This disables all other clickable elements so that any two points can be selected without triggering other map features. Clicking close will remove the two markers, the line, and the distance dialog.\n\nBase Station Deployment Planning\nUsing the planning maps a user can easily search for a structure to be used for a Base Station deployment.\nFirst go to the Maps Tab and zoom into an area where coverage is needed to be deployed.\n\nClick the layers button and select Structures. This will plot all available structures in the area.\n\nClick the layers button again, then clickFilter Structures. This allows filtering of the displayed structures to a particular company or a structure greater than a specified height. In the case below we filtered to see only American Tower Corp Structures greater than 100ft high.\n\n\nThe map will now show only the filtered towers.\n\nThis filtered set displays the structures that meet the deployment requirements.\nLeft clicking the tower will display a theoretical coverage of the tower. The coverage area displayed is a 10 mile Radius at the max structure height.\n\nOnce a desired structure is located, right click the structure to see more detailed information related to that structure.\n\nStructures appearing at the same geographic location within 5 significant decimal places for latitude and longitude are now marked on the map with a footer image.\n\nHovering over a group of Structures displays a tooltip listing the Structures at that location. The first item in the tooltip shows the Structure that is visible in the Map.\n\nClicking on the item for any other Structure promotes that Structure to the top.\n\nPlanning Map Statistics\nWhen a Planning Map is active, a statistics header is added to the map. This header shows Entry and Path Quality statistics for the Planning Map. The Entries statistic shows the breakdown of Devices and Base Stations included on the Planning Map. The Path Quality statistic shows threshold groupings by Path Quality of all Devices on the Map.\n\nCoverage Tool\nThe Coverage Tool button launches a dialog that contains a search field for entering addresses or locations.\n\nOnce the search information is submitted by pressing the enter key or clicking theicon, the map shows a pin for the location and the estimated path quality to nearby Base Stations (See Path Quality below). The green areas on the map reflect areas of high quality radio reception.\nRight-clicking on an empty area of the map provides a short cut for checking coverage. This creates a pin at the clicked location and opens the Location Information dialog. Selecting the Path Quality tab shows the estimated path quality to nearby Base Stations (See Path Quality below).\nCoverage Layer\nThe Coverage Layer is designed to display predicted network coverage of Base Stations within a given area. The layer is comprised of all viewsheds corresponding to the Base Stations within the Map's viewport, and presented as green image overlays.\nThis layer is only enabled at zoom level 9 and higher and may require zooming in to view coverage, as dynamically indicated by the Map Layers icon:\n- Available\n- Unavailable\nOnce available, activate the Coverage Layer by first clicking the 'Map Layers' button, and then checking the 'Coverage' option.\n\nWhen changes in either the location focus of the Map viewport or the zoom level are detected, a refresh is required to update the Coverage Layer's presentation, as indicated by a yellow emphasis outline and motion (not shown) of the 'Refresh Map' button:\nThe Coverage Layer supports the current coverage settings for path quality. These can be configured from the \"Set Coverage Settings\" option seen above. This allows configuration of a Base Station Classification filter and the current coverage mode. This will limit the Base Station coverage shown to only Base Stations with that classification and those based on the coverage mode being used.\n\nThe Coverage Layer's opacity can be adjusted via the 'Set Overlay Opacity' option from the menu shown above.\nSenet LVN Coverage and Helium Hotspot Layers\nTwo additional coverage layers are also available to visualize broader regional coverage, the Senet LVN Coverage layer and the Helium Hotpots layer.\nSenet LVN Coverage Layer\nThe Senet LVN Coverage layer shows the aggregate coverage provided by all Base Stations participating in the Senet LVN. Covered areas are presented as green hexagons based on Path Quality colored according to the following table:\n\nHelium Hotspots Layer\nThe Helium Hotspots layer shows the location of known Helium Hotspots on the Map as purple hexagons. Each hexagon may include one or more Helium Hotspots within the displayed region. Path Quality calculations have the option to include Helium Extended coverage for determining whether an area is covered by the Helium Network.\n\nPath Quality\nThe path quality dialog shown in the lower left of the map after clicking on the map or executing a Coverage search, shows detailed information about the distance between the search location and the Base Station and reception quality expressed as a percentage. This percentage reflects the Fresnel clearance (line of site) between two points. This calculation uses an elevation database to determine how obstructions interfere with the line of site. Note: The zoom level of the map can be adjusted after the search to view the results with a different perspective. This may be required to see in-range Base Stations that are outside of the initial result view.\nThe pin plot for the selected location will also display a vector to each Base Station indicating the direction of coverage.\nThe following are different examples of line of sight path quality calculations:\nAnd this is how the path quality results are displayed in the map:\nPath Quality Settings\nSenet provides the ability to configure how path quality is calculated by allowing override of key inputs as well as control over which type of Base Station it is calculated for. Inputs overrides include Base Station height (feet) and radius (miles) , Device height (feet) and whether or not to include Helium Extended coverage. The Classification filter constrains which types of Base Stations the calculation is performed for. Customized settings are persisted across calculations to ensure a consistent planning experience.\n\nMultiple Classifications\n\nInclude Helium Coverage\n\nPath Quality Results\n\nNote\nPath Quality will include a count of the nearby Helium hotspots within range of the target location. Hotspot name, distance, and azimuth information are not included, because this is an aggregate count and not attributed to just one hotspot.\nPath Quality Marker Colors\nPath Quality Markers are generated for Planning Map entries that do not have a pre-defined marker. The markers are generated if the Calculate Path Quality check-box is selected during map creation or initiating a path quality calculation from the table.\nIf Helium hotspots are included in the Path Quality calculations, the generated markers include a purple dot as shown here:\nLVN Base Station Filtering\nBoth Coverage and Path Quality support optionally filtering the displayed Base Stations to those that are privately or publicly owned. Senet Support must enable this feature to access it. When enabled, a selection control appears in the Coverage Search and Path Quality interfaces. This control filters displayed Base Stations or Base Station data to either Owned Base Stations (private) or LVN Base Stations (public). Any owned Base Stations that are not a part of the LVN, will not be visible if the LVN filter is applied.\n\n\nThis is the Path Quality dialog shown by right-clicking anywhere on the map:\n\nProposed Entries Export\nThe Proposed Entries menu item provides options to export the proposed Base Stations within a planning map. Clicking the \"All\" option exports all proposed Base Stations. Clicking the \"Selected\" option exports the proposed Base Stations with displayed Viewsheds. This option is only available when a planning map is open and exports a file similar in format to the Base Station export.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
451 },
452 {
453 "platform": "Senet",
454 "type": "docs",
455 "source": "https://docs.senetco.io/ap/deviceProfiles/#device-profiles",
456 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nDevice Profiles\nSetting Device Profiles\nAdding Device Profiles\nDevice Profiles\nDevice Profiles define how the Network Server manages the LoRa operational parameters of one or more Devices.\n\nSetting Device Profiles\nProfiles are set as part of Device registration or activation.\nProfiles are set as part of Device registration or activation.\nDevice Profiles are enforced continuously. Once assigned they take effect upon successful join and through ongoing evaluation of all uplinks thereafter.\nDevice Profiles are enforced continuously. Once assigned they take effect upon successful join and through ongoing evaluation of all uplinks thereafter.\nAdding Device Profiles\nTo add a new Device Profile click thebutton and fill in the required information.\nTo edit a Profile, highlight the row and click thebutton.\nBase Settings\nWhen editing or adding a Profile click on theto configure its base settings.\n\nADR Settings\nWhen editing or adding a profile, click on theto configure its ADR (Adaptive Data Rate) settings.\n\nLoRa Regional Settings\nWhen editing or adding a profile click on theto configure its LoRa region specific settings.\n\nChannel Mask\nIn this section, the current settings for which channels are enabled or disabled are displayed and controlled, with respect to the following:\nDefault:Expected default channel plan for the selected region.\nDefault:Expected default channel plan for the selected region.\nDevice Defaults:Expected default channel plan for the Devices not compliant with the regional default.\nDevice Defaults:Expected default channel plan for the Devices not compliant with the regional default.\nOverride Settings:Channel plan to be commanded by LNS after the Device(s) successfully joins the Network.\nOverride Settings:Channel plan to be commanded by LNS after the Device(s) successfully joins the Network.\nFor the US915 and AU915 fixed Channel Plan regions, theDevice DefaultsandOverride Settingsmay be updated using a custom channel mask editor, indicated by the pencil icon to the right of the respective fields:\n\nClicking the pencil launches the editor, wherein the Channel Mask located at the top will dynamically update in response to changes:\n\nThe editor also supports filtering the list, making it easy to find and update specific channels:\n\nFor all other regions, the Channel Mask is directly entered as a 2 or 4-character hexadecimal string:\n\nEstimated Location Settings\nWhen editing or adding a profile click on theto configure its Estimated Location algorithm settings.\nOptions to select and configure the algorithms used to determine the estimated location of a Device are set in this section. Configuration options are only available for the Advanced - Signal Quality Influenced algorithm.\n\nAlgorithms\nAdvanced Algorithm Options\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
457 },
458 {
459 "platform": "Senet",
460 "type": "docs",
461 "source": "https://docs.senetco.io/dev/#edit-gateway",
462 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nDeveloper Documentation\nDashboard\nDevice Details\nEdit Device\nGateway Details\nEdit Gateway\nDelete Gateway\nDeveloper Documentation\nIoT development for the Senet Network\n\nJoin the Community\nUse theSenet Communityto ask question, read articles, talk to Senet employees and other Portal users.\nDashboard\nThe Dashboard is the main view of the Portal. Users can connect their Devices and Gateways to the Senet Network through a simple registration process. The Dashboard displays high level statistics and RF data to help users monitor their equipment.\nCustomize the Dashboard\nClick on the gearin the top-right corner.\nOptions are displayed to choose a view and toggle Dashboard features.\n\nNote\nWhen the Tile View is selected, theTile Sortingoptions are displayed at the bottom of the Dashboard Settings. When the Table View is selected, rows can be sorted by clicking on the column headers.\nTile View\nChoose theTile Viewin theDashboard Settingsto display each Devices or Gateways in a tile. The tiles show network and configuration data along with a graph to display transaction and RF statistics.\n\nClick on the plus iconabove the tiles to open the registration window shown below.\n\nClick on the Device image to register a Device or the Gateway image to register a Gateway. See theDevice Registrationdocumentation orGateway Registrationdocumentation for step-by-step instructions.\nClick on the menu buttonin the top right corner of the tile. Click on the delete buttonto remove the Device or Gateway. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\n\nTable View\nChoose theTable Viewin theDashboard Settingsto display the Devices and Gateways in separate tables.\n\nClick on the register buttonabove the Device or Gateway table to open the respective registration window. See theDevice Registrationdocumentation or theGateway Registrationdocumentation for step-by-step instructions.\nClick on a row to select a Device or Gateway. Click on the delete buttonto remove the selected item. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\nThere are two options provided for deleting a Device:\nDelete the Device from the Network.\nDelete the Device from the Account only.\nDeleting the Device from the Network removes the Device from the NMS completely. It will not be able to communicate on the Senet Network following the deletion.\nDeleting the Device from the Account leaves the Device in an active state on the Network, but removes it from display in the Developer view. Deleting a Device from an Account also removes any Device specific Notification Targets. Data from the Device will not be forwarded until it is associated with a new Account and Notification Target.\n\nNetwork Delete\n\nAccount Delete\n\nDevice Details\nClick on a Device EUI or Device image in the dashboard to open theDevice Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above allows users to edit their Device, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open theEdit Devicewindow\nSend Downlink\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\nEdit Device\nEdit the Device description, type and notes in the DETAILS tab.\n\nEdit the Device latitude and longitude in the LOCATION tab.\n\nEdit theNotification Targetin the NOTIFICATION TARGET tab.\n\nSelect LoRaWAN Device settings can be overriden in the DEVICE PROFILE tab. These configure the behavior of the Device on the network and do not normally need to be changed. Accordingly, this tab is not visible by default. Check the Device Profile checkbox on the DETAILS tab to display this tab.\n\nThe following table contains the list of LoRaWAN settings that can be set in this tab:\nGateway Details\nClick on a Gateway EUI or Gateway image in the Dashboard to open theGateway Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above displays information and statistics about the Gateway. Click on thebutton to minimize.\nEdit Gateway\nEdit the Gateway installation information.\n\nDelete Gateway\nClick thebutton in the table view or thebutton in the tile view to remove the Gateway. A dialog is shown to confirm the delete request. The dialog includes a checkbox to indicate that the Gateway should also be permanently removed from the network. If the box is not checked, only the user's association to the Gateway is removed.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
463 },
464 {
465 "platform": "Senet",
466 "type": "docs",
467 "source": "https://docs.senetco.io/ap",
468 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
469 },
470 {
471 "platform": "Senet",
472 "type": "docs",
473 "source": "https://docs.senetco.io/ap/#application-events",
474 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
475 },
476 {
477 "platform": "Senet",
478 "type": "docs",
479 "source": "https://docs.senetco.io/dev/streaming/InitialState/",
480 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nInitial State\nPlatform Setup\nNotifier Setup\nInitial State\nInitial State (http://initialstate.com) is a data analytics and visualization platform for the IoT.Messages will be forwarded inJSONformat (SeeDefault Data Fields).\nPlatform Setup\nAfter creating your Initial State account, you will need to create a \"New Stream Bucket\", give this bucket a name and use the generated Bucket Key and Access Key to create your Initial State Notification Target. Click on your Stream Bucket settings (top left).\nNotifier Setup\nSpecify the Bucket Key and Access Key into the providedNotification Targetfields.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
481 },
482 {
483 "platform": "Senet",
484 "type": "docs",
485 "source": "https://docs.senetco.io/dev/streaming/HTTP/",
486 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nHTTP/HTTPS\nPlatform Setup\nNotifier Setup\nHTTP/HTTPS\nThe Senet Network can be instructed to forward received messages using RESTful HTTP/HTTPS. The forwarder will be expecting a page that accepts a standard HTTP POST. Messages are forwarded asJSONwithout a message wrapper, i.e. messages will begin and end with {...} and will not include message={...}. Messages will be contained in the FormBody of the post. Using the Senet Development Portal, users can configure the API to forward option HTTP Post or HTTPS Post and supply the URL of the POST accept page. For users that move beyond the development stage, Senet can assign a block of EUIs to be forwarded thus eliminating the need to assign each node to a forwarding address.\nPlatform Setup\nImplementation specific.\nNotifier Setup\nThe HTTP/HTTPS Notification Target also allows up to two header values to be specified. If headers are specified, they will be added to the HTTP-Request that is POSTed to the URL. Headers in this context are typically used to provide authentication for the request. For instance, you may want to specify an “APIKey” that identifies the Request. The Destination API would then read the APIKey header value to validate the request.\nMessages will be forwarded inJSONformat (SeeDefault Data Fields).\nIn an effort to support older implementations, we offer a Legacy Format with the HTTP/HTTPS forwarder.\nExample Legacy Format with Additional RF Data Fields:\n{\n \"PDU\":\"01080100F2020018\",\n \"FREQ\":907.9,\n \"GW\":\"AAAAAAAAAAAAAAAA\",\n \"EUI\":\"FFFFFFFFFFFFFFFF\",\n \"TXTime\":\"2017-04-19T17:38:34.504Z\",\n \"RSSI\":-51,\n \"SeqNo\":13,\n \"Port\":1,\n \"SNR\":11,\n \"DataRate\":1}\n{\n \"PDU\":\"01080100F2020018\",\n \"FREQ\":907.9,\n \"GW\":\"AAAAAAAAAAAAAAAA\",\n \"EUI\":\"FFFFFFFFFFFFFFFF\",\n \"TXTime\":\"2017-04-19T17:38:34.504Z\",\n \"RSSI\":-51,\n \"SeqNo\":13,\n \"Port\":1,\n \"SNR\":11,\n \"DataRate\":1}\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
487 },
488 {
489 "platform": "Senet",
490 "type": "docs",
491 "source": "https://docs.senetco.io/ap/appStreaming/",
492 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Streaming\nConfiguration Options\nNotification Target Types\nApplication Streaming\nApplication Notifiers allow data from an Application’s entire Device population to be securely forwarded to third parties; typically data-processing platforms that provide tailored aggregation, analysis and visualization services. The Notifier configuration provisions the third party’s end-point communication requirements, enabling the Network Server to establish and maintain the northbound data stream.\nNote\nOnly Application Provider Administrators can create, edit and delete Notifiers.\nTo add a Notification Target from the Applications view: first select an Application row from the table; next click the \"Modify Notification Target\" toolbar button; and lastly select \"Add Target\" from the dropdown menu. Additional options to Edit and Delete will be present for existing Notification Targets.\n\nEach Notification Target type has a set of common configuration options and a set of additional options that are unique to that target. Some target types do not support all of the common options, so these options may not always be visible.\n\nAdditionally, Notification Targets may be edited from the Application Details view by clicking the gear icon in the upper right corner of the Application Details Information panel:\n\nConfiguration Options\nThe following options, displayed as checkboxes in the Notification Target configuration dialog, toggle inclusion of the fields shown below in the data streamed to the Notification Target:\nFields\nThe following fields are included in the data streamed to the Notification Target if enabled in the Notification Target configuration dialog:\n* Requires contractual agreement\nNotification Target Types\nThere are several supported Application Notification Target types:\nHTTP\nSenet Packet\nAWS API Gateway\nLosant\nMQTT\nQubitro\nTagoIO\nEach type has unique configuration options.\nHTTP\nSenet Packet\nAWS API Gateway\nLosant\nMQTT\nQubitro\nTagoIO\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
493 },
494 {
495 "platform": "Senet",
496 "type": "docs",
497 "source": "https://docs.senetco.io/dev/stream",
498 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nAPI Reference\nOverview\nNotification Targets\nSupported Notification Targets\nUplink API\nDownlink API\nDownlink API - Multicast\nDownlink API - Clear Downlinks\nAPI Reference\nSenet offers a variety of methods to stream device messages transmitted over the Senet Network.\nOverview\nUplink Messages\nDevices transmit anuplink messageto one or more gateways that relays the message to the network server. The network server forwards the message to an IoT platform.\n\nDownlink Messages\nIoT platforms make calls to the network server. The network server sends eachdownlink messageto a single gateway that transmits the message to a single device.\n\nNotification Targets\nData streaming is setup by creating aNotification Targetfor a devices. TheNotification Targetconfigures the network server to stream device uplinks to a user specified destination or 3rd party IoT platform. In other words, uplink messages are forwarded as they are received by the Senet Network.\nConfigure a Notification Target:\nOpen theEdit Devicewindow.Table View: Select a row in the device table. Click on the edit button.Tile View: Click on the menu button. Click on the edit button.Device Details: Click on the edit button.\nOpen theEdit Devicewindow.\nTable View: Select a row in the device table. Click on the edit button.\nTable View: Select a row in the device table. Click on the edit button.\nTile View: Click on the menu button. Click on the edit button.\nTile View: Click on the menu button. Click on the edit button.\nDevice Details: Click on the edit button.\nDevice Details: Click on the edit button.\n\nClick on the NOTIFICATION TARGET tab.\nClick on the NOTIFICATION TARGET tab.\nIn theForward Todropdown menu, choose a Notification Target type to display the required fields and options.\nIn theForward Todropdown menu, choose a Notification Target type to display the required fields and options.\nComplete the required fields and click Save.\nComplete the required fields and click Save.\nNote\nA firewall rule may need to be added to allow incoming uplink messages from the Senet Network.\nSenet Source IP Addresses: 34.197.99.138 and 52.88.64.191\nSupported Notification Targets\nThe Senet Network supports a variety of options to forward messages as they are received by the network. Options may be to forward messages to a private socket listener or a public subscription based analytics solution. By Default, only the packet with the best Signal to Noise Ratio (SNR) will be forwarded. To receive packets received by multiple gateways (Duplicate Packets) enable “Include Duplicate Uplinks” when setting up the notification target.\nFor a list of the supported notifications targets and configurations use the drop-down API menu above.\nConsecutive Errors\nNotification Targets that produce 10 consecutive errors when forwarding data will be disabled by the network server. This is to prevent excessive load on the target and on the network server. A short outage in network connectivity should not trigger the 10 consecutive error limit on most devices. However, if your device has a very short transmit interval, it may be possible to reach the 10 consecutive error limit in a very short period of time. If your Notification Target is disabled by the network server, review the Last Error message field in the device details. This error message will help you understand why the notifications are failing. If you believe the errors were caused by an interruption in service that has now been corrected, you can re-enable the Notification Target to restore message forwarding. If the error condition persists, the Notification Target will again be disabled when the error limit is reached.\nUplink API\nThe Senet Network receives payload data from devices via one or more gateways that receive the transmission. In addition to streaming the payload data (pdu), network information is also included. The data is formatted usingJSONand contains the following default fields. Optional RF fields can also be added by enabling \"Include RF Data\" in the notification target.\nThe Senet Network supports the standardJSONobject model where each object contains one-to-many key/values pairs. TheJSONobject is in the following format:\nNote\nSenet may add additional fields during future Portal updates. Please ensure that your Application will ignore any unknown fields and continue to parse the notification data.\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\nFields\n* Requires contractual agreement in Production\nExample with Payload Fields:\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\n\nExample with RF Fields:\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":4,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"snr\":10,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":4,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"snr\":10,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\n\nDownlink API\nSenet provides a simple API for sending downlinks to devices on the Senet Network using HTTP POST. The Downlink API can be leveraged by a Notifier endpoint where in response to receiving uplinks, downlinks are automatically submitted to the downlink queue. All API requests require an authorization key passed either as a parameter or in an authorization header of a Curl command. Senet API keys are 44-character alpha-numeric strings with a prefix of either “AK2:” or “AK3:”.\nImplementing the Downlink API\nThe Senet Downlink API is available to all Portal users. It is implemented as a standard parameterized URL.\nClick on the usernamein the top-right corner.\nClick on the usernamein the top-right corner.\nFrom the dropdown menu, selectEdit Account Info.\nFrom the dropdown menu, selectEdit Account Info.\n\nClick on the Generate API Key buttonon the right side underDeveloper API Keyto generate and display a new API Key.\nClick on the Generate API Key buttonon the right side underDeveloper API Keyto generate and display a new API Key.\n\nCopy the key, storing it securely and safely: this key uniquely identifies the user's account to the Portal. All incoming API calls must be validated with this key in conjunction with registered devices and gateways.\nCopy the key, storing it securely and safely: this key uniquely identifies the user's account to the Portal. All incoming API calls must be validated with this key in conjunction with registered devices and gateways.\nUsing the API Key and parameterized URL described below, downlinks can now be sent to the user's devices with the Downlink API. In the examples below, the \"<API_KEY>\" value should be replaced with the generated key.\nUsing the API Key and parameterized URL described below, downlinks can now be sent to the user's devices with the Downlink API. In the examples below, the \"<API_KEY>\" value should be replaced with the generated key.\nResource URL\nhttps://portal.senetco.io/rest/current/device/sendmsg\nHTTP Method\nPOST\nParameters\nResponse\nCurl Example:\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmsg?eui=FFFFFFFFFFFFFFFF&pdu=0102&confirmed=true&port=88&timeoutMinutes=2\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmsg?eui=FFFFFFFFFFFFFFFF&pdu=0102&confirmed=true&port=88&timeoutMinutes=2\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Multicast\nSend multicast downlink messages to a multicast session allowing a user specified list of gateways to transmit on.\nResource URL\nhttps://portal.senetco.io/rest/current/device/sendmcastmsg\nHTTP Method\nPOST\nParameters\nResponse\nCurl Example\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Clear Downlinks\nClears queued downlink messages. If a specific message ID is supplied, only that downlink will be cleared, otherwise all queued messages are cleared.\nResource URL\nhttps://portal.senetco.io/rest/current/device/clearmsgs\nHTTP Method\nPOST\nParameters\nResponse\nCurl Example\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\n{\"clearedIds\":[00001]}\n}\n{\"clearedIds\":[00001]}\n}\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
499 },
500 {
501 "platform": "Senet",
502 "type": "docs",
503 "source": "https://docs.senetco.io/dev/streaming/PubNub/",
504 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nPubNub\nPlatform Setup\nNotifier Setup\nPubNub\nPubNub (http://pubnub.com) is a real time messaging service that allows users to postJSONMessages and subscribe to a stream of these messages. The PubNub Notification Target allows for device messages to be forwarded to one of these streams.\nMessages will be forwarded inJSONformat (SeeDefault Data Fields).\nPlatform Setup\nFrom the PubNub dashboard create a new App and a new Keyset. The Publish Key is the key that identifies the stream, the Subscriber Key is the key that identifies the subscribable stream. The Channel is the subscriber channel that the messages will appear on and Client UUID is the client id, this will identify the user in a stream.\nThe PAM Authentication (Optional) field is used when PAM authentication is required on the stream.\n\nClick on debug console and create a Client. Here you will make your Client UUID and Channel Name(this goes into subscriber channel) in the notifier.\n\nNotifier Setup\nSpecify the Publish Key, Client UUID, Subscriber Key, and Subscriber Channel into the providedNotification Targetfields. The PAM Authentication field is optional and only necessary if the stream has been configured for authentication.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
505 },
506 {
507 "platform": "Senet",
508 "type": "docs",
509 "source": "https://docs.senetco.io/dev/#dashboard",
510 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nDeveloper Documentation\nDashboard\nDevice Details\nEdit Device\nGateway Details\nEdit Gateway\nDelete Gateway\nDeveloper Documentation\nIoT development for the Senet Network\n\nJoin the Community\nUse theSenet Communityto ask question, read articles, talk to Senet employees and other Portal users.\nDashboard\nThe Dashboard is the main view of the Portal. Users can connect their Devices and Gateways to the Senet Network through a simple registration process. The Dashboard displays high level statistics and RF data to help users monitor their equipment.\nCustomize the Dashboard\nClick on the gearin the top-right corner.\nOptions are displayed to choose a view and toggle Dashboard features.\n\nNote\nWhen the Tile View is selected, theTile Sortingoptions are displayed at the bottom of the Dashboard Settings. When the Table View is selected, rows can be sorted by clicking on the column headers.\nTile View\nChoose theTile Viewin theDashboard Settingsto display each Devices or Gateways in a tile. The tiles show network and configuration data along with a graph to display transaction and RF statistics.\n\nClick on the plus iconabove the tiles to open the registration window shown below.\n\nClick on the Device image to register a Device or the Gateway image to register a Gateway. See theDevice Registrationdocumentation orGateway Registrationdocumentation for step-by-step instructions.\nClick on the menu buttonin the top right corner of the tile. Click on the delete buttonto remove the Device or Gateway. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\n\nTable View\nChoose theTable Viewin theDashboard Settingsto display the Devices and Gateways in separate tables.\n\nClick on the register buttonabove the Device or Gateway table to open the respective registration window. See theDevice Registrationdocumentation or theGateway Registrationdocumentation for step-by-step instructions.\nClick on a row to select a Device or Gateway. Click on the delete buttonto remove the selected item. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\nThere are two options provided for deleting a Device:\nDelete the Device from the Network.\nDelete the Device from the Account only.\nDeleting the Device from the Network removes the Device from the NMS completely. It will not be able to communicate on the Senet Network following the deletion.\nDeleting the Device from the Account leaves the Device in an active state on the Network, but removes it from display in the Developer view. Deleting a Device from an Account also removes any Device specific Notification Targets. Data from the Device will not be forwarded until it is associated with a new Account and Notification Target.\n\nNetwork Delete\n\nAccount Delete\n\nDevice Details\nClick on a Device EUI or Device image in the dashboard to open theDevice Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above allows users to edit their Device, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open theEdit Devicewindow\nSend Downlink\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\nEdit Device\nEdit the Device description, type and notes in the DETAILS tab.\n\nEdit the Device latitude and longitude in the LOCATION tab.\n\nEdit theNotification Targetin the NOTIFICATION TARGET tab.\n\nSelect LoRaWAN Device settings can be overriden in the DEVICE PROFILE tab. These configure the behavior of the Device on the network and do not normally need to be changed. Accordingly, this tab is not visible by default. Check the Device Profile checkbox on the DETAILS tab to display this tab.\n\nThe following table contains the list of LoRaWAN settings that can be set in this tab:\nGateway Details\nClick on a Gateway EUI or Gateway image in the Dashboard to open theGateway Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above displays information and statistics about the Gateway. Click on thebutton to minimize.\nEdit Gateway\nEdit the Gateway installation information.\n\nDelete Gateway\nClick thebutton in the table view or thebutton in the tile view to remove the Gateway. A dialog is shown to confirm the delete request. The dialog includes a checkbox to indicate that the Gateway should also be permanently removed from the network. If the box is not checked, only the user's association to the Gateway is removed.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
511 },
512 {
513 "platform": "Senet",
514 "type": "docs",
515 "source": "https://docs.senetco.io/dev/streaming/Dweet/",
516 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nDweet\nPlatform Setup\nNotifier Setup\nDweet\nDweet (http://dweet.io) is easy to use platform that allows for user messages to be published and subscribed to it was designed for machine-to-machine messaging for IoT. To use Dweet you just choose a unique name, This name is called a \"Thing\", it is a grouping for all your messages. Specify your \"Thing\" in the Dweet Notification Target, the Key is an optional configuration value that is only needed if you want to Lock your \"Thing\" to keep your messages private.\nMessages will be forwarded inJSONformat (SeeDefault Data Fields).\nPlatform Setup\nJust choose a uniquemy-thing-namefor your \"Thing\" (must not include spaces).\nYou can view posts to your \"Thing\" at https://dweet.io/get/dweets/for/my-thing-name\nNotifier Setup\nSpecify themy-thing-nameof your \"Thing\" in theNotification Targetfield. Provide the Key to your \"Thing\" if it has been created as private.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
517 },
518 {
519 "platform": "Senet",
520 "type": "docs",
521 "source": "https://docs.senetco.io/rp/customMapLayers/",
522 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nOverview\nAdding Custom Layers\nEnabling a Custom Map Layer\nOverview\nCustom Map Layers provide a flexible way to display overlays on a Map. This feature allows creation of custom visualizations to share with customers. These include such overlays as custom images, Coverage Raster images, and Geographic borders.\nAdding Custom Layers\nCustom map layers are custom overlays that can be put on the map. These can consist of two formats, either a KML (Keyhole Markup Language) file or image overlay. From the layers menu, clicking \"Manage Custom Layers\" launches the Custom Layers management dialog.\nTo create a layer, select Manage Custom Layers from the Layers button menu. This action will open the Custom Layers management dialog.\nTo create a layer, select Manage Custom Layers from the Layers button menu. This action will open the Custom Layers management dialog.\n\nClick thebutton on the Custom Layers management table to launch the create dialog.Create Overlay Dialog:\nClick thebutton on the Custom Layers management table to launch the create dialog.\n\nCreate Overlay Dialog:\n\nSelect the file source for the Custom Layer. If the source file is KML, name the file to continue. If it’s an image overlay, the bounds of the image overlay must be defined.KML Overlay Example:Image Overlay Example:\nSelect the file source for the Custom Layer. If the source file is KML, name the file to continue. If it’s an image overlay, the bounds of the image overlay must be defined.\nKML Overlay Example:\n\nImage Overlay Example:\n\nAfter the layer is saved, the file is uploaded to the server and the progress of the upload is displayed.Upload in Progres:Upload Complete:\nAfter the layer is saved, the file is uploaded to the server and the progress of the upload is displayed.\nUpload in Progres:\n\nUpload Complete:\n\nWhen the upload completes, the layer can be displayed on the map from the Select Custom Layer dialog. After creation, layers can be edited to change the name or in the case of image overlays, change the bounds of the image.Edit Name Example:Edit Bounds Example:\nWhen the upload completes, the layer can be displayed on the map from the Select Custom Layer dialog. After creation, layers can be edited to change the name or in the case of image overlays, change the bounds of the image.\nEdit Name Example:\n\nEdit Bounds Example:\n\nEnabling a Custom Map Layer\nCustom Layers are enabled by first enabling the Custom Layer feature and then clicking the \"Select Custom Layer\" menu item from the Layers button.\n\nOnce the menu item is clicked, the Custom Map Layers selection dialog is shown.\n\nUp to 3 Custom Layers can be selected. Clicking the OK button adds that layer to the Map view. This screenshot shows a sample view with a single Custom Layer map selected.\n\nSetting Overlay Image Opacity\nThe opacity of images that are uploaded as Custom Layers can be customized from the Layers button. Click the Set Overlay Opacity menu item to launch a dialog to customize the opacity.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
523 },
524 {
525 "platform": "Senet",
526 "type": "docs",
527 "source": "https://docs.senetco.io/rp/adminContracts/",
528 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nContracts\nContracts\nAll Contracts associated with Customer accounts are displayed in this view. Contracts are created and managed by Senet, but RAN Providers can see contracts that exist for their account. Each is comprised of a unique numeric identifier, name, and Customer account association. These contracts are then associated with the RAN Provider Base Stations for billing and accounting purposes. Please contactsales@senetco.comwith all questions regarding creation of new contracts or updates to existing contacts.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
529 },
530 {
531 "platform": "Senet",
532 "type": "docs",
533 "source": "https://docs.senetco.io/rp/#user-interface",
534 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nRAN Provider Documentation\nGetting Started\nUser Interface\nRAN Provider Documentation\nRegister and manage LoRaWAN Base Stations on the Senet Network. RAN (Radio Access Network) Provider Base Stations generate revenue based on the number of qualified messages that used the Radio Access Network.\nGetting Started\nLearn how toRegister a Base Station.\nLearn how toRegister a Base Station.\nLearn how toInstall the Senet Packet Forwarder.\nLearn how toInstall the Senet Packet Forwarder.\nLearn how toCustomize and Navigate the Dashboard.\nLearn how toCustomize and Navigate the Dashboard.\nUser Interface\nBase Stations\nThe main landing page will allow a RAN provider to provision and deploy their own RAN provided Base Stations. When a new Base Station is registered to the network the RAN provider can modify Base Station's channel plan, view Base Station details, RF statistics, performance, and much more.\nBase Station Details Summary\nIn Details Summary view a RAN provider is able to view number of heard devices, transactions, Ethernet/Cell stats, network round trip time, and CPU/Memory statistics over the course of a given time period. The RAN provider is also able to view uptime and other critical statistics to monitor the Base Station's health over time.\nBase Station Events\nThe events view helps a RAN provider view the traffic and device's that are flowing through their Base Station. These events show a devices EUI, RF statistics and other important information.\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nBase Station RF Statistics\nIf you are looking for RF statistics, this view will show you the Base Station receive and transmit statistics over time with a heat map for all channels and frequencies.\nBase Station Stats\nThe Statistics page shows how a Base Station is performing over a daily, monthly or lifetime with view in to uplinks, downlinks (both foreign and local), average transaction and average device counts.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
535 },
536 {
537 "platform": "Senet",
538 "type": "docs",
539 "source": "https://docs.senetco.io/eula.html",
540 "content": "Senet LoRaWAN®Development Portal Terms of Service\n(Last updated December 09, 2019)\nThe Senet LoRaWAN®Development\nPortal is being made available by Senet, Inc. (“Senet,” “we,” “us,” or “our”) to You on the condition that You agree to these terms and\nconditions (the “Terms of Service”\nor “Agreement”). “Licensee,” “You,” or “Your” refers\nto the person accessing or using the Services, or, if the Services are being\nused on behalf of an organization, such as an employer, “Licensee,” “You,” or “Your” means such organization. In the\nlatter case, the person accessing or using the Services represents and warrants\nthat he or she has the authority to do so and bind such organization to these\nTerms of Service. Violation of any of the terms below will result in the\ntermination of this Agreement and the Services. BY CLICKING THE “I ACCEPT”\nBUTTON OR USING THE SERVICES, YOU ACKNOWLEDGE THAT YOU HAVE REVIEWED AND ACCEPT\nTHESE TERMS AND ARE AUTHORIZED TO ACT ON BEHALF OF, AND BIND TO THIS AGREEMENT,\nTHE OWNER OF THIS ACCOUNT. IF YOU DO NOT HAVE SUCH AUTHORITY, OR IF YOU DO NOT\nAGREE WITH THESE TERMS, YOU MUST NOT ACCEPT THIS AGREEMENT AND MAY NOT ACCESS\nOR USE THE SERVICES.\n1.Certain Definitions.\n“Application”\nmeans those software applications which: (i) are\ndeveloped, stored, accessed, and/or supported by You using the Services; (ii)\nadd substantial functionality beyond the functionality provided by the components\nprovided by Senet; (iii) are not commercial alternatives for, or competitive in\nthe marketplace with, any components of the Software, or any other Senet products\nor services; and (iv) are designed to only function on the Senet LoRaWAN™network.\n“Cloud\nServices” means the third party vendors and hosting partners Senet uses to\nprovide the infrastructure, hardware, software, networking and technology to\nrun the Services.\n“Content”\nmeans all data and content, such as data files, written text, keys, computer\nsoftware, music, audio files or other sounds, photographs, videos or other\nimages that is processed using the Services, including those used in the\ndevelopment of Your Application.\n“Developer\nAccount” means an account specific to one of Your Licensed Developers\nthrough which the Licensed Developer accesses the Services for Your benefit or\non Your behalf.\n“Documentation” means any\naccompanying documentation made available to You (electronically or otherwise)\nby Senet for use with the Services.\n“Licensed\nDeveloper” means (1) You, if you are an individual, or (2) if You are an\norganization, an individual employee or third-party consultant authorized to\ndevelop and use the Services for You in accordance with this Agreement. Each\nLicensed Developer must register his or her own Developer Account and may not\nuse the Services except under the terms of this Agreement.\n“Services”\nmeans the Senet LoRaWAN™Developer Portal, including the Cloud\nServices and Software, as well as the various Senet software products\naccessible through the Services.\n“Software”\nmeans any Senet proprietary software products, SDKs, code, files, or other\nsoftware made available to You through the Services, together with any fixes,\nupdates, and upgrades provided to You.\n2. Developer License Grant.Subject to\nthe terms and conditions set forth in this Agreement, Senet hereby grants to\nYou, and You hereby accept, a limited, personal, non-transferable,\nnon-sublicensable and non-exclusive license to access and use the Services in\nthe development of Your Application as set forth in the Documentation. Any and\nall rights in the Services not expressly granted to You hereunder are reserved\nin all respects. Except as expressly granted in this Agreement,Youare not licensed to use, copy, modify, or distribute\ncopies of all or any portion of the Services.\n3. License Limitations.Except as specifically permitted in the terms of\nthis Agreement You may not (and You may not allow any of Your Licensed\nDevelopers to):\n3.1 register more than (2) LoRaWAN gateways;\n3.2 register more than ten (10) devices on the LoRaWAN™network;\n3.3transmitand receive more than 2,600 messages in any 24 hour\nperiod for Your combined devices (including acknowledgements); Uplinks are\ncounted as one message, downlinks are counted as 4 messages.\n3.4 copy, modify, adapt, translate, or otherwise\ncreate derivative works of the Services (including the Software) or any\nsoftware, services, or other technology of the third-party vendor(s) or hosting\npartner(s) who Senet engages to provide the infrastructure, hardware, software,\nnetworking, storage, and related technology required to operate and provide the\nServices;\n3.5 reverse engineer, decompile, disassemble, or\notherwise attempt to discover the source code of the Services;\n3.6 rent, lease, sell, resell, assign, sublicense,\nor otherwise transfer rights in or to the Services, or make the Services\navailable on a “service bureau” basis or otherwise allow any third party to use\nor access any of the foregoing (except independent contractors acting on Your\nbehalf);\n3.7 remove or modify any proprietary notices,\nlegends, or labels on the Services;\n3.8 use, post, transmit, or introduce into the\nServices any device, software, virus, worm, back door, trojan horse, similar\nharmful code, or routine which interferes or attempts to interfere with the\noperation of the Services or Senet’s LoRaWAN™network; or\n3.9access or\nuse the Services in a manner that: (a) violates any applicable laws;\n(b) violates the rights of any third party; (c) purports to subject\nSenet to any other obligations; or (d) for any purpose not specifically\npermitted in this Agreement.\n4. Content.\nThe Services do not include storage\ncapabilities. You agree that You are solely responsible for (and that Senet has\nno responsibility to You or to any third party for) any Content that You or Your\nLicensed Developer(s) create or display while using the Services and for the\nconsequences of Your and Your Licensed Developer(s) actions (including any loss\nor damage which Senet may suffer) by doing so. You are solely responsible for\nthe backup of Your Content and acknowledge that You and Your Licensed\nDeveloper(s) upload Content at Your own risk.\n5. Privacy /Collection\nand Use of Data.\nIf You or Your Licensed Developer(s)\ncollect, store, or process personal information when using these Services, You\nagree to comply with all privacy and data protection laws, taking into account\nthe nature of the information to be processed, as well as the features and\nlimitations of the Services as described in this Agreement or as otherwise\nprovided to You or Your Licensed Developer(s). The Services, in the normal\ncourse of operations, provides Senet with aggregated, statistical data (such as\nproduct or feature usage and functionality metrics), which is anonymized and\naggregated with other such anonymized data (“Aggregated Anonymous Data”). To the extent that any Aggregated\nAnonymous Data is collected by Senet,Youagree that\nSenet may use, store, analyze, and disclose such Aggregated Anonymous Data for\nany lawful business purpose without a duty of accounting to You.\nThis License prohibits\nthe collection and publishing of any data or analysis which benchmarks,\nevaluates, or otherwise measures features or functionality of the Senet\ndeveloper portal or the Senet Network Management Serviceswithout written\npermission from Senet.To\nremove all doubt, publishing is defined as the dissemination and use of the\ndata or the analysis for purposes beyond the internal use of Licensee,\nincluding but not limited to blog posts, tweets, reports or any other public\nforum.\n6. Security.\nSenet may apply security technologies and\nprocedures to help protect against unauthorized access or use of the Services. Senet\ndoes not guarantee the success of such technologies and procedures. You are\nsolely responsible for the security, protection and backup of Your Content, and\nany other Content or software You or Your Licensed Developer(s) use in\nconnection with the Services.\n7. Term and Termination.\n7.1Term and Termination.This Agreement will continue in effect from\nthe date Licensee has clicked on the box until terminated by a party in\naccordance with this Section.Either\nparty may, upon written notice to the other party, immediately terminate this\nAgreement at any time and without cause.Senet may temporarily suspend all or any part of the rights granted\nunder this Agreement immediately and without notice if Senet, in its sole\ndiscretion, believes that You have violated or attempted to violate any term,\ncondition or the spirit of this Agreement, engages in illegal or malicious\nactivities, interferes with any other user (i.e., hacking or intrusion), or for\nany other reason.\n7.2Effect of Termination.Upon termination of this Agreement, all\nrights and licenses granted herein shall cease, and Licensee shall cease all\nuse or access to the Services and shall return to Senet or destroy all items,\nincluding Software and Documentation, provided by Senet hereunder.Licensee is solely responsible for backing up\nall source code, software, information or other materials uploaded to the Services.Senet has no liability for the deletion of\nsuch materials after the termination of this Agreement.\n8. Use of Third Party Services and Links\nto Third Party Sites.\nYou understand that Senet uses third\nparty vendors and hosting partners to provide the necessary infrastructure,\nhardware, software, networking, storage, and related technology required to run\nthe Services. Senet is not responsible for the services provided by such third\nparty vendors. The Services may also include links to third party sites. Senet\ndoes not control such sites and is not responsible for the content of any\nlinked site, any links contained in a linked site, or any changes or updates to\nsuch sites. Senet is not responsible for any form of transmission received from\nany linked site. You acknowledge and agree that Senet is not liable for any\nloss or damage which may be incurred by You as a result of the availability of\nthird party vendor resources or external sites.\n9. Intellectual Property.\nAll title\nand ownership rights in and to the Services, the intellectual property embodied\nin the Services, and any trademarks or service marks of Senet that are used in\nconnection with the Services are and shall at all times remain exclusively\nowned by Senet and its licensors. Any and all rights in and to the Services not\nexpressly granted to Licensee, are reserved and retained by Senet.\n10.Warranties.\nTHE SERVICES\nARE PROVIDED ON AN “AS IS” BASIS WITHOUT ANY WARRANTIES OF ANY KIND TO THE\nFULLEST EXTENT PERMITTED BY LAW, AND SENET EXPRESSLY DISCLAIMS ANY AND ALL\nWARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, ANY\nIMPLIED WARRANTIES OF MERCHANTABILITY, TITLE, FITNESS FOR A PARTICULAR PURPOSE\nAND NON-INFRINGEMENT.LICENSEE\nACKNOWLEDGES THAT SENET DOES NOT WARRANT THAT THE SERVICES WILL BE\nUNINTERRUPTED, TIMELY, SECURE, ERROR-FREE AND/OR FREE FROM VIRUSES OR OTHER\nMALICIOUS SOFTWARE, IF ANY, AND NO INFORMATION OR ADVICE OBTAINED BY LICENSEE\nFROM SENET SHALL CREATE ANY WARRANTY NOT EXPRESSLY STATED IN THESE TERMS OF\nSERVICE.\n11. Limitation of Liability.\nTO THE\nMAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT WILL SENET BE LIABLE\nFOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF\nTHIS AGREEMENT, INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,\nWORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL\nDAMAGES OR LOSSES, EVEN IF ADVISED OF THE POSSIBILITY THEREOF, AND REGARDLESS\nOF THE LEGAL OR EQUITABLE THEORY (CONTRACT, TORT OR OTHERWISE) UPON WHICH THE\nCLAIM IS BASED. IN ANY CASE, SENET’S ENTIRE LIABILITY UNDER ANY PROVISION OF\nTHIS AGREEMENT SHALL NOT EXCEED $5.00, NOTWITHSTANDING ANY FAILURE OF ESSENTIAL\nPURPOSE OF ANY LIMITED REMEDY. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR\nLIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND\nLIMITATION MAY NOT BE APPLICABLE. SENET IS NOT RESPONSIBLE FOR ANY LIABILITY\nARISING OUT OF CONTENT PROVIDED BY LICENSEE OR A THIRD PARTY THAT IS ACCESSED\nTHROUGH THE SOFTWARE AND/OR ANY MATERIAL LINKED THROUGH SUCH CONTENT.\n12. Indemnity.\nYou agree to indemnify, hold\nharmless, and defend Senet and its resellers from and against any and all\nclaims, lawsuits and proceedings (collectively “Claims”), and all expenses, costs (including attorney’s fees),\njudgments, damages and other liabilities resulting from such Claims, that arise\nor result from Your use of the Services in violation of this Agreement.13.\nConfidentiality.\nExcept as otherwise provided herein,\neach party expressly undertakes to retain in confidence all information and\nknow-how transmitted or disclosed to the other that the disclosing party has\nidentified as being proprietary and/or confidential or that, by the nature of\nthe circumstances surrounding the disclosure, ought in good faith to be treated\nas proprietary and/or confidential, and expressly undertakes to make no use of\nsuch information and know-how except under the terms and during the existence\nof this Agreement.However, neither party\nshall have an obligation to maintain the confidentiality of information that: (i) it received rightfully from a third party without an\nobligation to maintain such information in confidence; (ii) the disclosing\nparty has disclosed to a third party without any obligation to maintain such\ninformation in confidence; (iii) was known to the receiving party prior to its\ndisclosure by the disclosing party; or (iv) is independently developed by the\nreceiving party without use of the confidential information of the disclosing\nparty. Further, either party may disclose confidential information of the other\nparty as required by governmental or judicial order, provided such party gives\nthe other party prompt written notice prior to such disclosure and complies with\nany protective order (or equivalent) imposed on such disclosure. Except for the\nContent You upload to the Services,Youagree not to\ndisclose any confidential information to Senet and any such information shall\nnot, absent a separate written agreement, create any confidentiality obligation\nfor Senet. Without limiting the foregoing, Licensee shall treat any source code\nfor the Software as confidential information and shall not disclose,\ndisseminate, or distribute such materials to any third party without Senet’s\nprior written permission. Each party’s obligations under this Section 13 shall\napply at all times during the term of this Agreement and for five (5) years\nfollowing termination of this Agreement, provided, however, that (i) obligations with respect to source code shall survive in\nperpetuity and (ii) trade secrets shall be maintained as such until they fall\ninto the public domain.14.\nGoverning Law.\nThis Agreement will be governed by\nthe law of the State of New York, U.S.A., without regard to the conflict of\nlaws principles thereof. If any dispute, controversy, or claim cannot be\nresolved by a good faith discussion between the parties, then it shall be\nsubmitted for resolution to a state or Federal court or competent jurisdiction\nin New York, USA, and the parties hereby agree to submit to the jurisdiction\nand venue of such court. The Uniform Computer Information Transactions Act and\nthe United Nations Convention on the International Sale of Goods shall not\napply to this Agreement. If any provision of this Agreement is to be held\nunenforceable, such holding will not affect the validity of the other\nprovisions hereof.15.\nEntire Agreement.\nThis Agreement shall constitute the\nentire agreement between the parties with respect to the subject matter hereof\nand supersedes all prior and contemporaneous communications regarding the\nsubject matter hereof. Use of any purchase order or other Licensee document in\nconnection herewith shall be for administrative convenience only and all terms\nand conditions stated therein shall be void and of no effect unless otherwise\nagreed to in writing by both parties.16.\nNo Assignment.\nYou may not assign, sublicense,\nsub-contract, or otherwise transfer this Agreement, or any rights or obligations\nunder it, without Senet’s prior written consent.17.\nSurvival.\nFor avoidance of doubt, any\nprovisions of the Agreement containing license restrictions, warranties and\nwarranty disclaimers, confidentiality obligations, limitations of liability\nand/or indemnity terms, and any provision of the Agreement which, by its\nnature, is intended to survive shall remain in effect following any termination\nor expiration of the Agreement.18.\nSeverability.\nIf a particular provision of this\nAgreement is terminated or held by a court of competent jurisdiction to be\ninvalid, illegal, or unenforceable, this Agreement shall remain in full force\nand effect as to the remaining provisions.\n19. Force Majeure.\nNeither party shall be deemed in default of this\nAgreement if failure or delay in performance is caused by an act of God, fire,\nflood, severe weather conditions, material shortage or unavailability of\ntransportation, government ordinance, laws, regulations or restrictions, war or\ncivil disorder, or any other cause beyond the reasonable control of such party.\nYOU\nACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, YOU UNDERSTAND THIS AGREEMENT,\nAND UNDERSTAND THAT BY ACCESSING OR USING THE SERVICES IN ANY WAY, YOU AGREE TO\nBE BOUND BY THESE TERMS OF SERVICE.YOU\nFURTHER AGREE THAT, EXCEPT FOR WRITTEN SEPARATE AGREEMENTS BETWEEN SENET AND\nYOU, THIS AGREEMENT IS A COMPLETE AND EXCLUSIVE STATEMENT OF THE RIGHTS AND\nLIABILITIES OF THE PARTIES."
541 },
542 {
543 "platform": "Senet",
544 "type": "docs",
545 "source": "https://docs.senetco.io/ap/alerts/",
546 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nAlerts\nClearing Alerts\nDisabling Alerts\nBase Station Maintenance Mode\nAlert Email Notifications\nRegistration Token Expiring Alerts\nApplication Alerts\nApplication Alert Statistics\nAlerts\nAlerts provide a targeted view into the network, highlighting conditions of interest or concern and reflecting Senet's operational assessment and response activity. For example, Base Station connectivity loss or high CPU utilization, as well as Application transaction threshold events.\n\nUsing the Alert Status selection control, the table can be filtered to explore past and regularly occurring events.\n\nClearing Alerts\nAlerts can be cleared at any time through the Alerts table, this will move the Alert to Cleared state and allow the input of a clearing reason. To perform a clear on a single or multiple Alerts, simply select each Alert row by clicking on the status. Once they are selected click thebutton and provide the reason for clearing the Alert.\n\nWhen finished, click OK and the alert will be cleared.\nNote\nThis doesn't stop the Alert from reoccurring but subsequent occurrences of the same Alert will be raised as new Alerts.\nDisabling Alerts\nAlerts can be temporarily disabled directly from the Alerts table. Select one or more Alerts from the table and click thebutton to disable them.\nClick Yes in the confirmation dialog to complete the action.\n\nBase Station Maintenance Mode\nThe Admin Status of a Base Station can be set to Maintenance directly from the Alerts table. A Base Station with this status will not generate Alerts and will not be visible in the Map. Select one or more Alert(s) from the table and click thebutton to set the the status.\nClick Yes in the confirmation dialog to complete the action.\n\nAlert Email Notifications\nWhen an alert is raised, an email notification is sent to the configured Customer email address indicating that the alert failure has occurred. The list of recipients for this email list is configured and managed by the Network Operator.\nRegistration Token Expiring Alerts\nRegistration Token Expiring Alerts are designed to notify the user when aDevice Management Registration tokenhas or will soon expire. By default this alert will warn the user that it will expire two weeks before the expiration date. This alert will automatically clear when a new token is generated.\nApplication Alerts\nApplication alerts provide insight into the health of north-bound traffic forwarded to an IoT provider. Frequent alerts may indicate that there is a communication issue present that requires attention.\nApplication Alert Statistics\nThe Application Alert Statistics table shows statistics for the number of alerts raised in the last hour, the last day and the last week for each managed Application.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
547 },
548 {
549 "platform": "Senet",
550 "type": "docs",
551 "source": "https://docs.senetco.io/docs",
552 "content": "Home\nFAQGeneral FAQDevice FAQGateway FAQ\nGeneral FAQ\nDevice FAQ\nGateway FAQ\nReleases\nDocumentation\nDeveloper\nConnect devices and gateways to Senet's network\nApplication Provider\nManage production devices and applications\nRAN Provider\nProvision and monitor Base Stations\nRegister a new developer device\nSend downlink messages\nRegister a new developer gateway\nStream device messages to an IoT platform\nRegister and activate production devices\nCheck out the API reference\nTroubleshoot a device by enabling diagnostics\nView application usage statistics\nRegister a new Base Station\nView Base Stations that support the Senet Packet Forwarder\nExplore Base Station and message statistics\nResources\nCommunity\nJoin the Senet Community\nCustomer Support\nContact a Senet IoT expert\nPortal Login\nLogin to the Senet customer portal\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nFrom here you can search these documents. Enter\n your search terms below."
553 },
554 {
555 "platform": "Senet",
556 "type": "docs",
557 "source": "https://docs.senetco.io/ap/customMapLayers/",
558 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nOverview\nAdding Custom Layers\nEnabling a Custom Map Layer\nOverview\nCustom Map Layers provide a flexible way to display overlays on a Map. This feature allows creation of custom visualizations to share with customers. These include such overlays as custom images, Coverage Raster images, and Geographic borders.\nAdding Custom Layers\nCustom map layers are custom overlays that can be put on the map. These can consist of two formats, either a KML (Keyhole Markup Language) file or image overlay. From the layers menu, clicking \"Manage Custom Layers\" launches the Custom Layers management dialog.\nTo create a layer, select Manage Custom Layers from the Layers button menu. This action will open the Custom Layers management dialog.\nTo create a layer, select Manage Custom Layers from the Layers button menu. This action will open the Custom Layers management dialog.\n\nClick thebutton on the Custom Layers management table to launch the create dialog.Create Overlay Dialog:\nClick thebutton on the Custom Layers management table to launch the create dialog.\n\nCreate Overlay Dialog:\n\nSelect the file source for the Custom Layer. If the source file is KML, name the file to continue. If it’s an image overlay, the bounds of the image overlay must be defined.KML Overlay Example:Image Overlay Example:\nSelect the file source for the Custom Layer. If the source file is KML, name the file to continue. If it’s an image overlay, the bounds of the image overlay must be defined.\nKML Overlay Example:\n\nImage Overlay Example:\n\nAfter the layer is saved, the file is uploaded to the server and the progress of the upload is displayed.Upload in Progres:Upload Complete:\nAfter the layer is saved, the file is uploaded to the server and the progress of the upload is displayed.\nUpload in Progres:\n\nUpload Complete:\n\nWhen the upload completes, the layer can be displayed on the map from the Select Custom Layer dialog. After creation, layers can be edited to change the name or in the case of image overlays, change the bounds of the image.Edit Name Example:Edit Bounds Example:\nWhen the upload completes, the layer can be displayed on the map from the Select Custom Layer dialog. After creation, layers can be edited to change the name or in the case of image overlays, change the bounds of the image.\nEdit Name Example:\n\nEdit Bounds Example:\n\nEnabling a Custom Map Layer\nCustom Layers are enabled by first enabling the Custom Layer feature and then clicking the \"Select Custom Layer\" menu item from the Layers button.\n\nOnce the menu item is clicked, the Custom Map Layers selection dialog is shown.\n\nUp to 3 Custom Layers can be selected. Clicking the OK button adds that layer to the Map view. This screenshot shows a sample view with a single Custom Layer map selected.\n\nSetting Overlay Image Opacity\nThe opacity of images that are uploaded as Custom Layers can be customized from the Layers button. Click the Set Overlay Opacity menu item to launch a dialog to customize the opacity.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
559 },
560 {
561 "platform": "Senet",
562 "type": "docs",
563 "source": "https://docs.senetco.io/ap/adminConfigHistory/",
564 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nConfiguration History\nConfiguration History Filtering\nConfiguration History\nThe Configuration History view shows an audit of Collection object changes made by all users of the Portal. Collections are the abstract models of the objects that make up the LoRa network. This view assists in identifying potential root causes of network disruption stemming from configuration changes and can help identify responsible parties.\n\nConfiguration History Filtering\nThe Configuration History view includes a drop-down filter to show specific categories of configuration changes. These categories are listed in the filter and defined below.\n\nNote\nThe User filter is only available to the Application Admin user role.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
565 },
566 {
567 "platform": "Senet",
568 "type": "docs",
569 "source": "https://docs.senetco.io/docs/faqDevice/",
570 "content": "Home\nFAQGeneral FAQDevice FAQGateway FAQ\nGeneral FAQ\nDevice FAQ\nGateway FAQ\nReleases\nDevice FAQ\nFrequently Asked Questions about Devices\nDevice\nHow do I register a Device?\nPlease see theDevice Registrationpage.\nWhat doesAllocate EUIdo?\nIf a device does not have an OEM assigned EUI, an EUI will need to be programmed into the device.\nUsers can allocate EUIs for their devices from the Senet EUI registry. By default, each account is limited to 10 allocated EUIs.\nWhat if my device is not in theDevice Typedropdown list?\nTheDevice Typecan be left blank.\nWhy can't I register any more devices?\nUsers are limited to 10 devices by default. Please contactsupport@senetco.comto increase the maximum devices for an account.\nI deleted all of my devices. Why can't I register a new device?\nAllocated Device EUIs persist in a User's account.\nRegister a new device with an EUI that has already been allocated.\nTo view an account's allocated EUIs, openEdit Account Information(SeeEdit Account Information).\nThe EUIs will be listed underAllowed Device EUIs.\nHow do I edit a device?\nEdit a device from theDashboard Tile View.\nEdit a device from theDashboard Tile View.\nEdit a device from theDashboard Table View.\nEdit a device from theDashboard Table View.\nEdit a device from theDevice Details View.\nEdit a device from theDevice Details View.\nHow do I delete a device?\nDelete a device from theDashboard Tile View.\nDelete a device from theDashboard Tile View.\nDelete a device from theDashboard Table View.\nDelete a device from theDashboard Table View.\nNote\nAlthough the device is removed from the Dashboard, the Allocated EUIs are not removed from the account. The device data is also not deleted with the device. Just re-register the device EUI and the previous data will be accessible.\nWhat is aNotification TargetorNotifier?\nNotification Targets are IoT platform providers that provide north-bound data processing and analytic services. Notification Targets are configured at the Device and Application level.\nDevice Notification Targets are typically configured by a Developer when evaluating a particular IoT platform. This allows the Developer to troubleshoot connection and data transfer issues prior to establishing a production level integration with the platform.\nDevice Notification Targets are typically configured by a Developer when evaluating a particular IoT platform. This allows the Developer to troubleshoot connection and data transfer issues prior to establishing a production level integration with the platform.\nApplication Notification Targets are configured at the Application level and apply to all Devices on the Application. Once an IoT platform is selected for integration, the Application Target is configured so that all Devices on the Application forward data to the platform.\nApplication Notification Targets are configured at the Application level and apply to all Devices on the Application. Once an IoT platform is selected for integration, the Application Target is configured so that all Devices on the Application forward data to the platform.\nDifferences Between the Notifier Types:Individual Device Notification Target connections are considered temporary and are added and removed frequently. Application Notification Targets represent the final production integration with an IoT platform and are expected to remain connected at all times.Device Notification Targets automatically disable themselves after 10 consecutive failed attempts to successfully deliver a message. An Application Notification Target (production) will remain available and will continue to deliver messages until service is restored.\nDifferences Between the Notifier Types:\nIndividual Device Notification Target connections are considered temporary and are added and removed frequently. Application Notification Targets represent the final production integration with an IoT platform and are expected to remain connected at all times.\nIndividual Device Notification Target connections are considered temporary and are added and removed frequently. Application Notification Targets represent the final production integration with an IoT platform and are expected to remain connected at all times.\nDevice Notification Targets automatically disable themselves after 10 consecutive failed attempts to successfully deliver a message. An Application Notification Target (production) will remain available and will continue to deliver messages until service is restored.\nDevice Notification Targets automatically disable themselves after 10 consecutive failed attempts to successfully deliver a message. An Application Notification Target (production) will remain available and will continue to deliver messages until service is restored.\nPlease see theData Streamingpage for more detailed information on Notification Target configuration.\nWhat is a Notification Error?\nNotification Errors can be encountered when forwarding Device uplink data northbound to an IoT platform Application. These error counts are displayed in the Application Dashboard and details about each error can be seen in the Application Events view. The management platform may occasionally report “Error sending message (status code 408) - Error [Request timed out after: x seconds]”. This does not always mean that the back-end Application did not receive the message, only that the management platform has reached a threshold (x seconds) and is no longer going to wait for the response from the back-end Application. Many of these errors, along with Avg. Request Times increasing towards the threshold reported in the timeout, may indicate the back-end Application is unable to process the current load.\nHow do I forward uplinks to an IoT platform?\nPlease see theData Streamingpage.\nHow do I recover or view a device's App key?\nIn theEdit Devicewindow (SeeEdit Device), click on the key icon next to the Device EUI field. The App EUI and AppKey will then be displayed below the Device EUI.\nHow do I view or generate an API Key for sending downlinks?\nThe Active API key is ONLY displayed in the Senet Portal after it has been generated. Once a user leaves theEdit Account Informationpage, the API Key will not be displayed again.\nTo obtain an active API key, seeImplementing the Downlink API.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nFrom here you can search these documents. Enter\n your search terms below."
571 },
572 {
573 "platform": "Senet",
574 "type": "docs",
575 "source": "https://docs.senetco.io/rp/adminUsers/",
576 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nUsers\nAccount Types\nTwo Factor Authentication\nUpgrading Developer Users\nUsers\nEvery user is assigned an appropriate account type based on their role. Roles determine the features that are accessible to a user and controls whether the user can modify data.\nUser accounts can be created, edited, deleted and exported to a CSV file from the Users view under Administration. New accounts created from the login page are assigned the Developer role by default, but can be upgraded to accommodate other roles as needed.\nCreate UserAdd a new user account\nEdit User:Edit an existing user's account\nDelete User:Delete a user account\nRefresh:Manually update the user data in the table\nSettings:Select table columns to hide or show\nExport to Excel:Export the table data to an Excel spreadsheet\nUpgrade Developer User:Upgrade a Developer user account to an RAN Provider account.\n\nFilter controls are provided to show only those users with specific roles.\n\nAccount Types\nThe account type determines the feature set and data accessible to the user.\nRAN Provider Admin\nRAN Provider Admin users are responsible for administration of the RAN Provider Portal and its users.\nRAN Provider\nRAN Providers register, manage and monitor LoRaWAN Base Stations on the Operator's RAN (Radio Access Network).\nRAN Provider - Read Only\nRAN Provider Read Only users monitor everything RAN Managers have access to, e.g. LoRaWAN Base Stations on the Operator's RAN (Radio Access Network), but cannot make any changes.\nRAN Provider - Contract ViewThe RAN Provider - Contract View role is defined to create a Contract centric presentation of the RAN Provider data. Portal views are only visible to this role if the data in the view can be filtered by a Contract ID.\nThe following table shows all views that are visible to a user with the RAN Provider - Read Only role and whether that view is included for a user with the RAN Provider - Contract view role:\nTwo Factor Authentication\nAdministrators can enable two-factor authentication for end users.\nClick the two-factor authentication in the Edit User dialog.\nClick the two-factor authentication in the Edit User dialog.\n\nMake sure the user's information includes a valid phone number before saving.\nMake sure the user's information includes a valid phone number before saving.\n\nWhen the user logs into the Portal, they will be sent an authentication code to the registered phone number.\nWhen the user logs into the Portal, they will be sent an authentication code to the registered phone number.\n\nThat authentication code is entered to complete the login.\nThat authentication code is entered to complete the login.\n\nUpgrading Developer Users\nRAN Provider Administrators have the ability to upgrade Developer users to provide access to the RAN account's Base Stations. An Administrator enters the username of the Developer in the Upgrade Developer User dialog to grant access. If both users are Administrators, then each has the ability to select the roles to assign (both are assigned by default).\nIn order to protect Developer users from being taken control of by competing customers, an email domain field is configured by the platform provider for the RAN Provider account. Only Developers who have an email address with the same domain as the configured email domain can be upgraded. Additionally, Developer users cannot be upgraded if they have already been upgraded by the RAN Provider, the platform operator, or another customer.\n\nUsers that possess both Application Provider - Admin and RAN Provider - Admin roles can choose which roles to grant to a Developer during an upgrade.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
577 },
578 {
579 "platform": "Senet",
580 "type": "docs",
581 "source": "https://docs.senetco.io/rp/api/",
582 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nAPI Reference\nBase Station Provisioning API\nBase Station Deploy API\nBase Station Status API\nNetwork Management Notification API\nAPI Reference\nRAN Provider REST APIs provide direct data access to Base Station information for use in external monitoring and reporting. An API key is required to authenticate API usage. API keys are created and managed in theAPI Keysview.\nTo get started with the Base Station APIs, see theSwagger API Documentation.\nBase Station Provisioning API\nThe Base Station Provisioning API is designed to allow a customer to provision a set of Base Stations. This is similar to the bulk provisioning workflow provided by the UI and allows them to setup a Base Station before deploying it. They can enter basic provisioning information such as; eui, serial number, Base Station type, and ISM Band.\nResource URL\nhttps://api.senetco.io/rest/integration/bstn/provision\nHTTP Method\nPOST\nParameters\nNone\nRequest Body(JSON)\nBase Station Object\nSeeCSV File Formatunder Base Station Management.\nBase Station Models\nSeeBase Station Modelsunder Base Station Management.\nISM Band Names\nSeeISM Band Namesunder Base Station Management.\nResponse\nHTTP Response Codes\nExample request:\n{\n \"data\":[\n {\n \"eui\" :\"FAFFFFFFFFFF0001\",\n \"serialNum\" :\"F1F3F2F1\",\n \"ismBandName\" :\"US902-928:Default\",\n \"model\" :\"MULTITECH_CONDUIT\",\n \"channelConfig\":[5], \n \"tags\" :\"Docs Example,Portsmouth\"},\n\n {\n \"eui\" :\"FAFFFFFFFFFF0000\",\n \"serialNum\" :\"TF000000_000000001\",\n \"ismBandName\" :\"EU863-870:Default\",\n \"model\" :\"TEKTELIC_KONA_64\",\n \"tags\" :\"Docs Example,Portsmouth\"},\n\n {\n \"eui\" :\"FAFFFFFFFFFF0002\",\n \"serialNum\" :\"0X0F0F0F3\",\n \"ismBandName\" :\"AU915-928:Default\",\n \"model\" :\"KERLINK_IOTS\",\n \"tags\" :\"Docs Example,Portsmouth\"},\n {\n \"eui\" :\"FAFFFFFFFFFF0003\",\n \"serialNum\" :\"1234567890ABCDEF4\",\n \"ismBandName\" :\"India865-867:Default\",\n \"model\" :\"SEMTECH_PKT_FORWARDER\",\n \"tags\" :\"Docs Example,Portsmouth\"},\n {\n \"eui\" :\"FAFFFFFFFFFF0004\",\n \"serialNum\" :\"TF000000_000000005\",\n \"ismBandName\" :\"AS923:Default\",\n \"model\" :\"TEKTELIC_KONA_8\",\n \"tags\" :\"Docs Example,Portsmouth\"}\n ]}\n{\n \"data\":[\n {\n \"eui\" :\"FAFFFFFFFFFF0001\",\n \"serialNum\" :\"F1F3F2F1\",\n \"ismBandName\" :\"US902-928:Default\",\n \"model\" :\"MULTITECH_CONDUIT\",\n \"channelConfig\":[5], \n \"tags\" :\"Docs Example,Portsmouth\"},\n\n {\n \"eui\" :\"FAFFFFFFFFFF0000\",\n \"serialNum\" :\"TF000000_000000001\",\n \"ismBandName\" :\"EU863-870:Default\",\n \"model\" :\"TEKTELIC_KONA_64\",\n \"tags\" :\"Docs Example,Portsmouth\"},\n\n {\n \"eui\" :\"FAFFFFFFFFFF0002\",\n \"serialNum\" :\"0X0F0F0F3\",\n \"ismBandName\" :\"AU915-928:Default\",\n \"model\" :\"KERLINK_IOTS\",\n \"tags\" :\"Docs Example,Portsmouth\"},\n {\n \"eui\" :\"FAFFFFFFFFFF0003\",\n \"serialNum\" :\"1234567890ABCDEF4\",\n \"ismBandName\" :\"India865-867:Default\",\n \"model\" :\"SEMTECH_PKT_FORWARDER\",\n \"tags\" :\"Docs Example,Portsmouth\"},\n {\n \"eui\" :\"FAFFFFFFFFFF0004\",\n \"serialNum\" :\"TF000000_000000005\",\n \"ismBandName\" :\"AS923:Default\",\n \"model\" :\"TEKTELIC_KONA_8\",\n \"tags\" :\"Docs Example,Portsmouth\"}\n ]}\nExample Success Response:\n{\n \"jobId\":\"BstnMgmtJobReq:90000\",\n \"responseMsg\":\"BstnMgmtJobReq job starting now: Tue Dec 17 12:16:50 EST 2019\",\n \"serverId\":\"networkserver:OnPrem:172.18.0.1:8081\",\n \"statusCode\":200}\n{\n \"jobId\":\"BstnMgmtJobReq:90000\",\n \"responseMsg\":\"BstnMgmtJobReq job starting now: Tue Dec 17 12:16:50 EST 2019\",\n \"serverId\":\"networkserver:OnPrem:172.18.0.1:8081\",\n \"statusCode\":200}\nCurl Example\ncurl -XPOST\\\n https://api.senetco.io/rest/integration/bstn/provision \\-H'Authorization: <your API key>' \\\n -H'Content-Type: application/json' \\\n -d'{\"data\": [\n {\"eui\":\"FAFFFFFFFFFF0001\",\"serialNum\":\"F1F3F2F1\",\"ismBandName\":\"US902-928:Default\",\"model\":\"MULTITECH_CONDUIT\",\"channelConfig\": [5],\"tags\":\"Docs Example,Portsmouth\"},\n\n {\"eui\":\"FAFFFFFFFFFF0000\",\"serialNum\":\"TF000000_000000001\",\"ismBandName\":\"EU863-870:Default\",\"model\":\"TEKTELIC_KONA_64\",\"tags\":\"Docs Example,Portsmouth\"},\n\n {\"eui\":\"FAFFFFFFFFFF0002\",\"serialNum\":\"0X0F0F0F3\",\"ismBandName\":\"AU915-928:Default\",\"model\":\"KERLINK_IOTS\",\"tags\":\"Docs Example,Portsmouth\"},\n {\"eui\":\"FAFFFFFFFFFF0003\",\"serialNum\":\"1234567890ABCDEF4\",\"ismBandName\":\"India865-867:Default\",\"model\":\"SEMTECH_PKT_FORWARDER\",\"tags\":\"Docs Example,Portsmouth\"},\n {\"eui\":\"FAFFFFFFFFFF0004\",\"serialNum\":\"TF000000_000000005\",\"ismBandName\":\"AS923:Default\",\"model\":\"TEKTELIC_KONA_8\",\"tags\":\"Docs Example,Portsmouth\"}\n ] \n}'\ncurl -XPOST\\\n https://api.senetco.io/rest/integration/bstn/provision \\-H'Authorization: <your API key>' \\\n -H'Content-Type: application/json' \\\n -d'{\"data\": [\n {\"eui\":\"FAFFFFFFFFFF0001\",\"serialNum\":\"F1F3F2F1\",\"ismBandName\":\"US902-928:Default\",\"model\":\"MULTITECH_CONDUIT\",\"channelConfig\": [5],\"tags\":\"Docs Example,Portsmouth\"},\n\n {\"eui\":\"FAFFFFFFFFFF0000\",\"serialNum\":\"TF000000_000000001\",\"ismBandName\":\"EU863-870:Default\",\"model\":\"TEKTELIC_KONA_64\",\"tags\":\"Docs Example,Portsmouth\"},\n\n {\"eui\":\"FAFFFFFFFFFF0002\",\"serialNum\":\"0X0F0F0F3\",\"ismBandName\":\"AU915-928:Default\",\"model\":\"KERLINK_IOTS\",\"tags\":\"Docs Example,Portsmouth\"},\n {\"eui\":\"FAFFFFFFFFFF0003\",\"serialNum\":\"1234567890ABCDEF4\",\"ismBandName\":\"India865-867:Default\",\"model\":\"SEMTECH_PKT_FORWARDER\",\"tags\":\"Docs Example,Portsmouth\"},\n {\"eui\":\"FAFFFFFFFFFF0004\",\"serialNum\":\"TF000000_000000005\",\"ismBandName\":\"AS923:Default\",\"model\":\"TEKTELIC_KONA_8\",\"tags\":\"Docs Example,Portsmouth\"}\n ] \n}'\nBase Station Deploy API\nThe Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install. This API allows information about the Base Station deployment to be updated without using the web application. The information that can be updated includes, location, height, radius, address, and name.\nNote\nA Base Station must be created through the provisioning workflow, if the Base Station wasn't provisioned this way, the network administrator's support team should be contacted. If a Base Station was previously deployed, subsequent deployments will override previously provided information.\nResource URL\nhttps://api.senetco.io/rest/integration/bstn/deploy\nHTTP Method\nPOST\nParameters\nRequest Body(JSON)\nCurl Example\ncurl -XPOST\\\n 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\-H'Authorization: <your api key>' \\\n -H'Content-Type: application/json' \\\n -d'{\"address\":\"100 Market Street\",\"city\":\"Portsmouth\",\"stateProvince\":\"NH\",\"postalCode\":\"03801\",\"name\":\"Provisioned BSTN\",\"latitude\": 44.071568,\"longitude\": -70.762245,\"height\": 100,\"radius\": 10\n}'\ncurl -XPOST\\\n 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\-H'Authorization: <your api key>' \\\n -H'Content-Type: application/json' \\\n -d'{\"address\":\"100 Market Street\",\"city\":\"Portsmouth\",\"stateProvince\":\"NH\",\"postalCode\":\"03801\",\"name\":\"Provisioned BSTN\",\"latitude\": 44.071568,\"longitude\": -70.762245,\"height\": 100,\"radius\": 10\n}'\nExample request:\n{\n \"address\":\"100 Market Street\",\n \"city\":\"Portsmouth\",\n \"stateProvince\":\"NH\",\n \"postalCode\":\"03801\",\n \"name\":\"Provisioned BSTN\",\n \"latitude\":44.071568,\n \"longitude\":-70.762245,\n \"height\":100,\n \"radius\":10}\n{\n \"address\":\"100 Market Street\",\n \"city\":\"Portsmouth\",\n \"stateProvince\":\"NH\",\n \"postalCode\":\"03801\",\n \"name\":\"Provisioned BSTN\",\n \"latitude\":44.071568,\n \"longitude\":-70.762245,\n \"height\":100,\n \"radius\":10}\nResponse\nExample Success Response:\n{\n \"message\":\"Success!\"}\n{\n \"message\":\"Success!\"}\nBase Station Status API\nThe Base Station Status API returns detailed information for a set of Base Stations. This may include details about the Base Station like model type, version and uptime as well as current connection information.\nThere are 2 status sources supported by this API, that are selected using the required parameter.\nA status source of \"alert\" retrieve all Base Stations that have open alerts. This should be used in most cases when monitoring for failure conditions of Base Stations under your control.\nA status source of \"alert\" retrieve all Base Stations that have open alerts. This should be used in most cases when monitoring for failure conditions of Base Stations under your control.\nThe status source of \"any\" can be use to retrieve the status information of all the Base Stations under your control.\nThe status source of \"any\" can be use to retrieve the status information of all the Base Stations under your control.\nResource URL\nhttps://api.senetco.io/rest/integration/bstn/details\nHTTP Method\nGET\nParameters\nField Descriptions\nConnection Status\nThe status field of the response data contains collective connection status for a Base Station with a color indicating an overall state. Colors are based on a combination of Connection Status, Alert Severity and Case Priority. The coloring is hierarchical, with the color of the most severe state taking precedence. This color should be the same as the color displayed for the status column in the Base Station table, the Base Station Details view and the Maps in the UI.\nStatus Color\nCurl Examples\nStatus for Base Stations with open alerts.\ncurl -H\"authorization: <API_KEY_TO_USE>\"-XGET\"https://api.senetco.io/rest/integration/bstn/details?status=alert\"\ncurl -H\"authorization: <API_KEY_TO_USE>\"-XGET\"https://api.senetco.io/rest/integration/bstn/details?status=alert\"\nStatus for a specific Base Station with open alerts.\ncurl -H\"authorization: <API_KEY_TO_USE>\"-XGET\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\"\ncurl -H\"authorization: <API_KEY_TO_USE>\"-XGET\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\"\nStatus for Base Stations with or without open alerts.\ncurl -H\"authorization: <API_KEY_TO_USE>\"-XGET\"https://api.senetco.io/rest/integration/bstn/details?status=any\"\ncurl -H\"authorization: <API_KEY_TO_USE>\"-XGET\"https://api.senetco.io/rest/integration/bstn/details?status=any\"\nStatus for a Base Station with or without open alerts, only return fields \"status\" and \"lastContact\".\ncurl -H\"authorization: <API_KEY_TO_USE>\"-XGET\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\"\ncurl -H\"authorization: <API_KEY_TO_USE>\"-XGET\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\"\nResponse Examples\nFor a single Base Station all fields returned:\n{\n \"data\":[\n {\n \"eui\":\"AAAAAAAAAAAAAAAA\",\n \"status\":{\n \"color\":\"orange\",\n \"connIssues\":\"Connection Issues: No SSH\",\n \"alertCount\":1},\n \"lastContact\":1550691020270,\n \"lastPacket\":1550691080252,\n \"name\":\"Sample BSTN\",\n \"model\":\"MultiTech Conduit AP\",\n \"ismBandName\":\"US902-928:Default\",\n \"version\":\"02_04_04\",\n \"uptime\":30187974,\n \"radius\":10,\n \"antennaHeight\":15.01,\n \"alertLevel\":\"Level 1\",\n \"deltaTime\":41,\n \"location\":{\n \"latitude\":43.083412,\n \"longitude\":-70.77599},\n \"gpsLocation\":{\n \"latitude\":\"43.07851\",\n \"longitude\":\"-70.7583\"},\n \"gpsAltitude\":\"32.16134\"}\n ]}\n{\n \"data\":[\n {\n \"eui\":\"AAAAAAAAAAAAAAAA\",\n \"status\":{\n \"color\":\"orange\",\n \"connIssues\":\"Connection Issues: No SSH\",\n \"alertCount\":1},\n \"lastContact\":1550691020270,\n \"lastPacket\":1550691080252,\n \"name\":\"Sample BSTN\",\n \"model\":\"MultiTech Conduit AP\",\n \"ismBandName\":\"US902-928:Default\",\n \"version\":\"02_04_04\",\n \"uptime\":30187974,\n \"radius\":10,\n \"antennaHeight\":15.01,\n \"alertLevel\":\"Level 1\",\n \"deltaTime\":41,\n \"location\":{\n \"latitude\":43.083412,\n \"longitude\":-70.77599},\n \"gpsLocation\":{\n \"latitude\":\"43.07851\",\n \"longitude\":\"-70.7583\"},\n \"gpsAltitude\":\"32.16134\"}\n ]}\nMultiple Base Stations with only the \"status\" and \"lastContact\" fields returned:\n{\n \"data\":[\n {\n \"eui\":\"AAAAAAAAAAAAAAAA\",\n \"status\":{\n \"color\":\"orange\",\n \"connIssues\":\"Connection Issues: No SSH\",\n \"alertCount\":1},\n \"lastContact\":1550691020270},\n {\n \"eui\":\"BBBBBBBBBBBBBBBB\",\n \"status\":{\n \"color\":\"red\",\n \"connIssues\":\"No Issues\",\n \"alertCount\":2},\n \"lastContact\":1550691020354}\n ]}\n{\n \"data\":[\n {\n \"eui\":\"AAAAAAAAAAAAAAAA\",\n \"status\":{\n \"color\":\"orange\",\n \"connIssues\":\"Connection Issues: No SSH\",\n \"alertCount\":1},\n \"lastContact\":1550691020270},\n {\n \"eui\":\"BBBBBBBBBBBBBBBB\",\n \"status\":{\n \"color\":\"red\",\n \"connIssues\":\"No Issues\",\n \"alertCount\":2},\n \"lastContact\":1550691020354}\n ]}\nNetwork Management Notification API\nNetwork Management Notifications are administered by Operators and require their assistance to set up for use. This is a unique Notifier type that forwards alert status events for owned assets with alerting enabled. The type of the message determines the body of the message:\nHTTP Method\nPOST\nField Descriptions\nAlert Type Field Descriptions\nAlert type messages contain detailed information about the alert that was either raised or cleared.\nExample\n{\n \"type\":\"BASE_STATION\",\n \"subType\":\"ALERT\",\n \"data\":[\n {\n \"count\":\"3\",\n \"latestystemInfo\":\"Disconnected\",\n \"identifier\":\"00250C00010186DC\",\n \"lastOccurrence\":\"2019-05-09T19:01:56.765Z\",\n \"status\":\"cleared\",\n \"severity\":\"High\",\n \"name\":\"No Connection\",\n \"notes\":\"\",\n \"firstOccurrence\":\"2019-05-09T18:55:16.887Z\"}\n ]}\n{\n \"type\":\"BASE_STATION\",\n \"subType\":\"ALERT\",\n \"data\":[\n {\n \"count\":\"3\",\n \"latestystemInfo\":\"Disconnected\",\n \"identifier\":\"00250C00010186DC\",\n \"lastOccurrence\":\"2019-05-09T19:01:56.765Z\",\n \"status\":\"cleared\",\n \"severity\":\"High\",\n \"name\":\"No Connection\",\n \"notes\":\"\",\n \"firstOccurrence\":\"2019-05-09T18:55:16.887Z\"}\n ]}\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
583 },
584 {
585 "platform": "Senet",
586 "type": "docs",
587 "source": "https://docs.senetco.io/docs/faq/",
588 "content": "Home\nFAQGeneral FAQDevice FAQGateway FAQ\nGeneral FAQ\nDevice FAQ\nGateway FAQ\nReleases\nGeneral FAQ\nFrequently Asked Questions\nDevice\nFor FAQ's regarding Devices please refer to ourDevice FAQ Page\nBase Station\nFor FAQ's regarding Base Stations please refer to ourBase Station FAQ Page\nDashboard\nHow do I customize theDashboard View?\nPlease see theDashboard Customizationpage.\nHow do I edit my account information?\nClick on the usernamein the top-right corner.\nFrom the dropdown menu, selectEdit Account Info.\n\nClick on the edit buttons on the right side of each section to modify the existing data.\nMiscellaneous\nHow do I create a new account?\nOpen the following URL in browser:https://portal.senetco.io/?register=true\nOpen the following URL in browser:https://portal.senetco.io/?register=true\n\nComplete the form and pressCreate Account.\nComplete the form and pressCreate Account.\nAn account verification email will be sent fromsupport@senetco.comto the provided email address. Click on the link in the email to complete account setup.\nWhat is PSR?\nPSR:Packet Success Rate\nThis describes the ratio of packets received from a device compared to the total number of packets sent by that device over a period. The total\nnumber of packets is the difference between the minimum and maximum sequence numbers over the period. The unique sequence number of each\nreceived packet is used to tally a distinct count, even when reported by multiple Base Stations.\nWhat are SNR and RSSI?\nSNR:Signal to Noise Ratio\nRSSI:Received Signal Strength Indication\nWhat is Extended Coverage?\nExtended Coverage Services are delivered through integrations with partner networks. These integrations allow customers to use 3rd party operated partner networks in areas where Senet is not yet deployed or access densified coverage where Senet and its partners both offer connectivity.More information on Senet Extended Coverage.\nHow do I ask a new question?\nPlease visit ourCommunity Pageto create a new topic of discussion, post a reply or view answers to previously asked questions.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nFrom here you can search these documents. Enter\n your search terms below."
589 },
590 {
591 "platform": "Senet",
592 "type": "docs",
593 "source": "https://docs.senetco.io/ap/appUsage/#usage-accounting-data",
594 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nUsage & Accounting Data\nUsage Data and File Formats\nUsage Reports\nDevice Contracts\nUsage & Accounting Data\nAccounting data is kept for each Application and its Devices. This includes the number of Devices Activated, Joined and Deactivated; all Uplink and Downlink communication; as well as new Security Sessions. After being aggregated by Customer Contract ID, this data is used by the Billing and Rating process to generate invoices. The view below provides a summary of activity for Yesterday, Current Month, and Last Month.\n\nThe Usage Data statistics can be scoped to a specific contract by selecting it from the dropdown menu located in the navigation bar.\n\nField Descriptions\nUsage Data and File Formats\nOn the first of each month an Application Details file is generated for the prior month and made available for viewing/downloading. These contain detailed accounting information for Devices active during the previous month. |\nApplication Details File\nThe Application Details file includes network usage statistics for each Device associated with the application. The table below is an example of this usage file. The fields in the file are defined below. Device Service Metrics, (Metric A, B, and C) help characterize Device performance over the month.\n\nApplication Contracts File\nThe Contracts file includes aggregate usage statistics for all Contracts associated with the Application. The table below is an example of this usage file. The fields in the file are defined below.\n\nApplication Summary File\nThe Summary file includes aggregate usage statistics for all Devices associated with the Application. The table below is an example of this usage file. The fields in the file are defined below.\n\nUsage Reports\nUsage reports provide presentations of statistical trends in chart or table form. The reports are categorized by related statistics such as Devices in the Operational Summary, to provide strategic insight into the overall status of the Application.\nMessage Summary\nThe \"Message Summary\" shows a set of communication-specific charts for the Application. Each chart displays historical data for a given statistic. The time interval selection determines the aggregation period of the chart, e.g. Daily or Monthly.\n\nOnboarding Summary\nThe \"Onboarding Summary\" shows a set of charts for Devices that were added, removed, Activated, Deactivated or Registered to the Application. Each chart displays historical data for a given statistic. The time interval selection determines the aggregation period of the chart, e.g. Daily or Monthly.\n\nChecking the \"Show Combined Charts\" checkbox presents a consolidated view of the Onboarding Summary charts.\n\nOperational Summary\nThe \"Operational Summary\" shows a set of charts for Device communication activity or inactivity . Each chart displays historical data for a given statistic. The time interval selection determines the aggregation period of the chart, e.g. Daily or Monthly.\n\nChecking the \"Show Combined Charts\" checkbox presents a consolidated view of the Operational Summary charts.\n\nStacked Usage Charts\nFor those Applications with more than one Contract, selecting multiple items from the drop-down menu will update the Chart's bar columns by stacking discrete segments for each selected Contract. Whereas the default view aggregates data for all an Application's Contracts, the 'Select All' option displays the same data discretely. Tooltips for each segment in a stacked bar will reflect the corresponding Contract's value as well as the total combined value of the stacked bar. Note: the chart's display will not change for Applications with a single Contract.\nContract Multi-Select Menu\n\nDiscrete Contracts\n\nAggregated Contracts\n\nDiscrete Statistics and Contracts\n\nDevice Contracts\nA contract defines the billing rate and communications entitlement associated with a pool of Devices. When contracts are established, Contracts IDs are assigned by Senet and made available to associate in the Registration and Activation processes. Contracts are optionally assigned to Devices during the Registration Process, but it is mandatory to assign a contract during the Device Activation process. Once the Device has been Activated and has Joined the network a contract may only be updated by contactingSenet Support. When a Device is Activated it transitions to a billable state.\nThe panel below displays all of the available contracts that are associated with the Application Provider. These contracts are available to assign to your Devices during theRegistrationandActivationprocesses, the ID field maps to the contractId variable for use with the Registration/Activation API . The list of contracts is updated as new contracts are created for different engagements on the Senet Network.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
595 },
596 {
597 "platform": "Senet",
598 "type": "docs",
599 "source": "https://docs.senetco.io/ap/deviceProfiles/",
600 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nDevice Profiles\nSetting Device Profiles\nAdding Device Profiles\nDevice Profiles\nDevice Profiles define how the Network Server manages the LoRa operational parameters of one or more Devices.\n\nSetting Device Profiles\nProfiles are set as part of Device registration or activation.\nProfiles are set as part of Device registration or activation.\nDevice Profiles are enforced continuously. Once assigned they take effect upon successful join and through ongoing evaluation of all uplinks thereafter.\nDevice Profiles are enforced continuously. Once assigned they take effect upon successful join and through ongoing evaluation of all uplinks thereafter.\nAdding Device Profiles\nTo add a new Device Profile click thebutton and fill in the required information.\nTo edit a Profile, highlight the row and click thebutton.\nBase Settings\nWhen editing or adding a Profile click on theto configure its base settings.\n\nADR Settings\nWhen editing or adding a profile, click on theto configure its ADR (Adaptive Data Rate) settings.\n\nLoRa Regional Settings\nWhen editing or adding a profile click on theto configure its LoRa region specific settings.\n\nChannel Mask\nIn this section, the current settings for which channels are enabled or disabled are displayed and controlled, with respect to the following:\nDefault:Expected default channel plan for the selected region.\nDefault:Expected default channel plan for the selected region.\nDevice Defaults:Expected default channel plan for the Devices not compliant with the regional default.\nDevice Defaults:Expected default channel plan for the Devices not compliant with the regional default.\nOverride Settings:Channel plan to be commanded by LNS after the Device(s) successfully joins the Network.\nOverride Settings:Channel plan to be commanded by LNS after the Device(s) successfully joins the Network.\nFor the US915 and AU915 fixed Channel Plan regions, theDevice DefaultsandOverride Settingsmay be updated using a custom channel mask editor, indicated by the pencil icon to the right of the respective fields:\n\nClicking the pencil launches the editor, wherein the Channel Mask located at the top will dynamically update in response to changes:\n\nThe editor also supports filtering the list, making it easy to find and update specific channels:\n\nFor all other regions, the Channel Mask is directly entered as a 2 or 4-character hexadecimal string:\n\nEstimated Location Settings\nWhen editing or adding a profile click on theto configure its Estimated Location algorithm settings.\nOptions to select and configure the algorithms used to determine the estimated location of a Device are set in this section. Configuration options are only available for the Advanced - Signal Quality Influenced algorithm.\n\nAlgorithms\nAdvanced Algorithm Options\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
601 },
602 {
603 "platform": "Senet",
604 "type": "docs",
605 "source": "https://docs.senetco.io/rp/gw/Management/",
606 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nBase Station Management\nBase Station Details\nAdding a Base Station\nBulk Provisioning Base Stations\nBase Station API Reference\nModifying a Base Station\nReplacing a Base Station\nDeleting a Base Station\nBase Station Tags\nConfiguring a Cellular Interface\nBase Station Management\nThe Base Station Tab allows a user to manage the Base Stations connected to the network. Through this management view the user has the ability to view statuses, details, and edit Base Station settings.\n\nThe default table shows a list of Base Stations configured for use on the network that have an Admin Status ofIn Service. To see all the Base Stations configured for the network, change the Admin Status on the top right of the table toAll\n\nThe first column of this table shows the connection status of the Base Station with a red or green dot. When there is an issue the mouse can be hovered over this dot to display more information on the connection status.\n\nThe Severity filter for the table can be used to selectively display conditions affecting Base Station status. These filter conditions are Base Stations with no issues, open alerts, open cases or connection issues.\n\nFor a quick overview of a Base Station hover over the EUI and click theicon to the right. This will then display a quick pop up of important information about the Base Station.\n\nBase Station Details\nFor an in depth look at Base Station click on the Base Station EUI for theBase Station Details page.\nAdding a Base Station\nTo add a new Base Station to the network click thebutton at the top of the table and fill in the required information.\n\nBulk Provisioning Base Stations\nMultiple Base Stations can be provisioned by uploading a CSV file from the Base Station table. The file contains all the information needed to provision a site that is not currently deployed. Once the file is uploaded, the request is processed and the status of the request is returned to the user.\nNote\nBulk operations are limited to one concurrent request per customer.\nClick on thebutton to open the menu. Select Bulk Provision from the dropdown menu.\n\nThis opens the Bulk Base Station Provisioning Dialog.\n\nCSV File Format\nBase Station Models\nISM Band Names\nThis table shows a list of valid ISM Band Names and valid Channel Bank IDs for use with the Provisioning API. Channel Banks are groups of frequencies that are enabled during provisioning. Frequencies supported vary by region. SeeSupported Regions. The Channel Bank IDs in the following table are shown as the arrays that are passed to the API via thechannelConfigparameter.\nISM Band\nISM Band Name\n# of Channels\nChannel Bank ID\nName\nUS 902-928MHz\nUS902-928:Default\n8 Channel\n[0]\nUS915: 902.3-903.7, 903.0\n[1]\nUS915: 903.9-905.3, 904.6\n[2]\nUS915: 905.5-906.9, 906.2\n[3]\nUS915: 907.1-908.5, 907.8\n[4]\nUS915: 908.7-910.1, 909.4\n[5]\nUS915: 910.3-911.7, 911.0\n[6]\nUS915: 911.9-913.3, 912.6\n[7]\nUS915: 913.5-914.9, 914.2\n[8]\nUS915: 903.1-904.5, 904.6\n16 Channel\nAny two iDs from 0-7, ex: [0,1], IDS can not be the same\nDynamic based on value\n64 Channel\n[0,1,2,3,4,5,6,7]\nUS915: 902.3-914.9\nEU 863-870MJz\nEU863-870:Default\n8 Channel\n[0]\nEU868: 867.1-867.9\n[1]\nEU868: 868.9,867.3-867.9\n16 Channel\n[0,2]\nEU868: 865.5-865.9,866.1-866.9,867.1-867.9\nIndia 865-867MHz\nIndia865-867:Default\n8 Channel\n[0]\nIndia: 865.0625, 865.4025, 865.6025, 865.785, 865.9850, 866.3-866.7\n16Channel\n[0]\nIndia: 865.0625, 865.4025, 865.6025, 865.785, 865.9850, 866.3-866.7\nAS 923MHz-1\nAS923:Default\n8 Channel\n[0]\nAS923-1: 923.2-924.6\n[1]\nAS923-1: 922.0-923.4\n[3]\nAS923-1: 922.2-923.6 - Deprecated\n16 Channel\n[0,2]\nAS923-1: 921.6-924.6\n[3,4]\nAS923.1: 920.6-923.6\nAS 923MHz-2\nAS923-2:Default\n8 Channel\n[0]\nAS923-2:921.4-922.8\nAS 923MHz-3\nAS923-3:Default\n8 Channel\n[0]\nAS923-3: 916.4-917.8\nAS 923MHz-4\nAS923-4:Default\n[0]\nAS923-4: 917.3-918.7\nAU 915-928MHz\nAU915-928:Default\n8 Channel\n[0]\nAU915: 915.2-916.6, 915.9\n[1]\nAU915: 916.8-918.2, 917.5\n[2]\nAU915: 918.4-919.8, 919.1\n[3]\nAU915: 920.0-921.4, 920.7\n[4]\nAU915: 921.6-923.0, 922.3\n[5]\nAU915: 923.2-924.6, 923.9\n[6]\nAU915: 924.8-926.2, 925.5\n[7]\nAU915: 926.4-927.8, 925.5\n16 Channel\nAny two iDs from 0-7, ex: [0,1], IDS can not be the same\nDynamic based on value\n64 Channel\n[0,1,2,3,4,5,6,7]\nAU915-928MHz\nExample Bulk Provisioning CSV\neui , model , serialNum , ismBandName , channelConfig , tags \nD130000016660000, MULTITECH_CONDUIT , F1234561 , US902-928:Default , \"0\" , \"Docs Example,Portsmouth\"\nD130000016660110, MULTITECH_CONDUIT , F1234562 , US902-928:Default , \"1\" , \"Docs Example,Portsmouth\"\nD130000016660020, MULTITECH_CONDUIT , F1234563 , US902-928:Default , \"2\" , \"Docs Example,Portsmouth\"\nD130000016660030, MULTITECH_CONDUIT , F1234564 , US902-928:Default , \"3\" , \"Docs Example,Portsmouth\"\nD130000016660040, MULTITECH_CONDUIT , F1234565 , US902-928:Default , \"4\" , \"Docs Example,Portsmouth\"\nD130000016660050, MULTITECH_CONDUIT , F1234566 , US902-928:Default , \"5\" , \"Docs Example,Portsmouth\"\nD130000016660060, MULTITECH_CONDUIT , F1234567 , US902-928:Default , \"6\" , \"Docs Example,Portsmouth\"\nD130000016660070, MULTITECH_CONDUIT , F1234568 , US902-928:Default , \"7\" , \"Docs Example,Portsmouth\"\nD130000016660080, MULTITECH_CONDUIT , F1234569 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660001, MULTITECH_CONDUIT , F123456A , US902-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660002, ARDUINO_YUN , 0X012445678333 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660004, KERLINK_PICO , F0123456B , India865-867:Default , , \"Docs Example,Portsmouth\"\nD130000016660005, KERLINK_IBTS_8 , AT123456C , India865-867:Default , , \"Docs Example,Portsmouth\"\nD130000016660006, KERLINK_IBTS_64 , AT123456D , AU915-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660007, KERLINK_IBTS_16 , AT123456E , AS923:Default , , \"Docs Example,Portsmouth\"\nD130000016660008, KERLINK_IOTS , 0X123456F , US902-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660009, LAIRD_SENTRIUS , 0X012441234567 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD13000001666000A, MULTITECH_CONDUIT , F1234571 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD13000001666000B, MULTITECH_CONDUIT_16_IP67 , F1234572 , US902-928:Default , \"1,7\" , \"Docs Example,Portsmouth\"\nD13000001666000C, MULTITECH_CONDUIT_AP , F1234573 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD13000001666000D, MULTITECH_CONDUIT_IP67 , F1234574 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD13000001666000E, SEMTECH_PKT_FORWARDER , 1234547890ABC123 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD13000001666000F, TEKTELIC_KONA_8 , T0123456_7890AB321, US902-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660010, TEKTELIC_KONA_16 , T0123456_7890AB432, US902-928:Default , \"3,4\" , \"Docs Example,Portsmouth\"\nD130000016660011, TEKTELIC_KONA_64 , T0123456_7890AB543, US902-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660012, TEKTELIC_KONA_MICRO_INDOOR , T0123456_7890A6547, US902-928:Default , , \"Docs Example,Portsmouth\"\neui , model , serialNum , ismBandName , channelConfig , tags \nD130000016660000, MULTITECH_CONDUIT , F1234561 , US902-928:Default , \"0\" , \"Docs Example,Portsmouth\"\nD130000016660110, MULTITECH_CONDUIT , F1234562 , US902-928:Default , \"1\" , \"Docs Example,Portsmouth\"\nD130000016660020, MULTITECH_CONDUIT , F1234563 , US902-928:Default , \"2\" , \"Docs Example,Portsmouth\"\nD130000016660030, MULTITECH_CONDUIT , F1234564 , US902-928:Default , \"3\" , \"Docs Example,Portsmouth\"\nD130000016660040, MULTITECH_CONDUIT , F1234565 , US902-928:Default , \"4\" , \"Docs Example,Portsmouth\"\nD130000016660050, MULTITECH_CONDUIT , F1234566 , US902-928:Default , \"5\" , \"Docs Example,Portsmouth\"\nD130000016660060, MULTITECH_CONDUIT , F1234567 , US902-928:Default , \"6\" , \"Docs Example,Portsmouth\"\nD130000016660070, MULTITECH_CONDUIT , F1234568 , US902-928:Default , \"7\" , \"Docs Example,Portsmouth\"\nD130000016660080, MULTITECH_CONDUIT , F1234569 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660001, MULTITECH_CONDUIT , F123456A , US902-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660002, ARDUINO_YUN , 0X012445678333 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660004, KERLINK_PICO , F0123456B , India865-867:Default , , \"Docs Example,Portsmouth\"\nD130000016660005, KERLINK_IBTS_8 , AT123456C , India865-867:Default , , \"Docs Example,Portsmouth\"\nD130000016660006, KERLINK_IBTS_64 , AT123456D , AU915-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660007, KERLINK_IBTS_16 , AT123456E , AS923:Default , , \"Docs Example,Portsmouth\"\nD130000016660008, KERLINK_IOTS , 0X123456F , US902-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660009, LAIRD_SENTRIUS , 0X012441234567 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD13000001666000A, MULTITECH_CONDUIT , F1234571 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD13000001666000B, MULTITECH_CONDUIT_16_IP67 , F1234572 , US902-928:Default , \"1,7\" , \"Docs Example,Portsmouth\"\nD13000001666000C, MULTITECH_CONDUIT_AP , F1234573 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD13000001666000D, MULTITECH_CONDUIT_IP67 , F1234574 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD13000001666000E, SEMTECH_PKT_FORWARDER , 1234547890ABC123 , US902-928:Default , , \"Docs Example,Portsmouth\"\nD13000001666000F, TEKTELIC_KONA_8 , T0123456_7890AB321, US902-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660010, TEKTELIC_KONA_16 , T0123456_7890AB432, US902-928:Default , \"3,4\" , \"Docs Example,Portsmouth\"\nD130000016660011, TEKTELIC_KONA_64 , T0123456_7890AB543, US902-928:Default , , \"Docs Example,Portsmouth\"\nD130000016660012, TEKTELIC_KONA_MICRO_INDOOR , T0123456_7890A6547, US902-928:Default , , \"Docs Example,Portsmouth\"\nBase Station API Reference\n*Details on provisioning Base Stations using the integration API can be found in the RAN-Provider documentationhere.\nModifying a Base Station\nTo modify Base Station information highlight the table row by clicking the Base StationNamethen click thebutton. This launches the Base Station Edit dialog.\n\nOverriding the Base Station Channel Mask\nFor advanced use only, this defines channel availability for the Base Station in question as an override to the default model-based ‘RX Channels’ configuration. Downlinks routed through the Base Station will only use mask-enabled channels. Likewise, uplinks heard only on mask-enabled channels are considered for ADR processing.\nThe mask value is expressed in bytes - with the LSB on the right - where the number of corresponding bits represents the minimum size channel plan for the Base Station’s region. For US915 and AU915 regions with plans of 72 fixed channels, the required length of an override mask is 9 bytes (72 bits).\nFor example, an override for either of these regions to use only the second bank of eight 125kHz uplink channels with the corresponding 500kHz downlink channel is expressed as 02000000000000FF00. Overrides defined for Base Stations using dynamic channel plans (EU868, IN865, and AS923) can vary in length, from at least 1 byte (8 bits) up to 2 bytes (16 bits), depending on the maximum number of supported channels.\nNote\nAs an advanced feature with potentially high impact to channel plans of nearby Devices, careful planning of any Override Channel Mask change is strongly encouraged.\n\nOverriding the Base Station Tx Power\nFor advanced use only, the Tx Power of a Base Station can be overriden for supported models and regions. If Tx override isn't supported, then the field is not shown. When supported, the field is shown with a warning message indicating that TX power should not exceed the regulatory limits of the region. Regardless of the configured Tx power, the applied value will not exceed the specified specified minimum and maximum values allowed. It will be ignored by the Base Station.\n\nSupported Models And Limits\nReplacing a Base Station\nBase Station Replacement allows users to replace existing Base Stations with new ones. This will move the site, viewshed, and case information from one Base Station to another making it easy to replace failed or misbehaving assets.\nThis can be done from the Base Station table. Simply select the base station you wish to replace and click the Replace button:\nThe Base Station Replacement dialog is shown with the information populated from the source Base Station. This also associates the new Base Station with all the cases of the original Base Station.\n\nDeleting a Base Station\nA Base Station can be deleted by selecting a row and clicking on thebutton. The user must type the Base Station EUI to confirm the delete. Only one Base Station can be deleted at a time. Deleting a Base Station will delete all records associated with that Base Station.\nBase Station Tags\nTo modify Base Station tags, highlight the rows by clicking the Base Station Names then click thebutton and then the \"Edit Tags\" menu item. This will launch the tag edit dialog which allows tags to be added or removed from the selected Base Stations. This also allows assigning tags to a single or multiple Base Stations. Base Stations can be searched by these tags through the table search.\n\nConfiguring a Cellular Interface\nTo configure the cellular interface on a Base Station highlight the table row by clicking the Base StationNamethen click thebutton. This button will only be available to click if the Base Station is running the latest compatible Senet Base Station software. In order to configure cellular interface the Base Station must be connected to a LAN.\n\nType the required APN (Access Point Name) and click Save.Mobile Country CodeandMobile Network Codeare only required for cellular interface configurations on Kerlink Base Station.\nIf the Base Station is already configured and connected through an active cellular interface, a warning message will be displayed:\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
607 },
608 {
609 "platform": "Senet",
610 "type": "docs",
611 "source": "https://docs.senetco.io/ap/#application-usage",
612 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
613 },
614 {
615 "platform": "Senet",
616 "type": "docs",
617 "source": "https://docs.senetco.io/rp",
618 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nRAN Provider Documentation\nGetting Started\nUser Interface\nRAN Provider Documentation\nRegister and manage LoRaWAN Base Stations on the Senet Network. RAN (Radio Access Network) Provider Base Stations generate revenue based on the number of qualified messages that used the Radio Access Network.\nGetting Started\nLearn how toRegister a Base Station.\nLearn how toRegister a Base Station.\nLearn how toInstall the Senet Packet Forwarder.\nLearn how toInstall the Senet Packet Forwarder.\nLearn how toCustomize and Navigate the Dashboard.\nLearn how toCustomize and Navigate the Dashboard.\nUser Interface\nBase Stations\nThe main landing page will allow a RAN provider to provision and deploy their own RAN provided Base Stations. When a new Base Station is registered to the network the RAN provider can modify Base Station's channel plan, view Base Station details, RF statistics, performance, and much more.\nBase Station Details Summary\nIn Details Summary view a RAN provider is able to view number of heard devices, transactions, Ethernet/Cell stats, network round trip time, and CPU/Memory statistics over the course of a given time period. The RAN provider is also able to view uptime and other critical statistics to monitor the Base Station's health over time.\nBase Station Events\nThe events view helps a RAN provider view the traffic and device's that are flowing through their Base Station. These events show a devices EUI, RF statistics and other important information.\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nBase Station RF Statistics\nIf you are looking for RF statistics, this view will show you the Base Station receive and transmit statistics over time with a heat map for all channels and frequencies.\nBase Station Stats\nThe Statistics page shows how a Base Station is performing over a daily, monthly or lifetime with view in to uplinks, downlinks (both foreign and local), average transaction and average device counts.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
619 },
620 {
621 "platform": "Senet",
622 "type": "docs",
623 "source": "https://docs.senetco.io/dev/stream/#downlink-api",
624 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nAPI Reference\nOverview\nNotification Targets\nSupported Notification Targets\nUplink API\nDownlink API\nDownlink API - Multicast\nDownlink API - Clear Downlinks\nAPI Reference\nSenet offers a variety of methods to stream device messages transmitted over the Senet Network.\nOverview\nUplink Messages\nDevices transmit anuplink messageto one or more gateways that relays the message to the network server. The network server forwards the message to an IoT platform.\n\nDownlink Messages\nIoT platforms make calls to the network server. The network server sends eachdownlink messageto a single gateway that transmits the message to a single device.\n\nNotification Targets\nData streaming is setup by creating aNotification Targetfor a devices. TheNotification Targetconfigures the network server to stream device uplinks to a user specified destination or 3rd party IoT platform. In other words, uplink messages are forwarded as they are received by the Senet Network.\nConfigure a Notification Target:\nOpen theEdit Devicewindow.Table View: Select a row in the device table. Click on the edit button.Tile View: Click on the menu button. Click on the edit button.Device Details: Click on the edit button.\nOpen theEdit Devicewindow.\nTable View: Select a row in the device table. Click on the edit button.\nTable View: Select a row in the device table. Click on the edit button.\nTile View: Click on the menu button. Click on the edit button.\nTile View: Click on the menu button. Click on the edit button.\nDevice Details: Click on the edit button.\nDevice Details: Click on the edit button.\n\nClick on the NOTIFICATION TARGET tab.\nClick on the NOTIFICATION TARGET tab.\nIn theForward Todropdown menu, choose a Notification Target type to display the required fields and options.\nIn theForward Todropdown menu, choose a Notification Target type to display the required fields and options.\nComplete the required fields and click Save.\nComplete the required fields and click Save.\nNote\nA firewall rule may need to be added to allow incoming uplink messages from the Senet Network.\nSenet Source IP Addresses: 34.197.99.138 and 52.88.64.191\nSupported Notification Targets\nThe Senet Network supports a variety of options to forward messages as they are received by the network. Options may be to forward messages to a private socket listener or a public subscription based analytics solution. By Default, only the packet with the best Signal to Noise Ratio (SNR) will be forwarded. To receive packets received by multiple gateways (Duplicate Packets) enable “Include Duplicate Uplinks” when setting up the notification target.\nFor a list of the supported notifications targets and configurations use the drop-down API menu above.\nConsecutive Errors\nNotification Targets that produce 10 consecutive errors when forwarding data will be disabled by the network server. This is to prevent excessive load on the target and on the network server. A short outage in network connectivity should not trigger the 10 consecutive error limit on most devices. However, if your device has a very short transmit interval, it may be possible to reach the 10 consecutive error limit in a very short period of time. If your Notification Target is disabled by the network server, review the Last Error message field in the device details. This error message will help you understand why the notifications are failing. If you believe the errors were caused by an interruption in service that has now been corrected, you can re-enable the Notification Target to restore message forwarding. If the error condition persists, the Notification Target will again be disabled when the error limit is reached.\nUplink API\nThe Senet Network receives payload data from devices via one or more gateways that receive the transmission. In addition to streaming the payload data (pdu), network information is also included. The data is formatted usingJSONand contains the following default fields. Optional RF fields can also be added by enabling \"Include RF Data\" in the notification target.\nThe Senet Network supports the standardJSONobject model where each object contains one-to-many key/values pairs. TheJSONobject is in the following format:\nNote\nSenet may add additional fields during future Portal updates. Please ensure that your Application will ignore any unknown fields and continue to parse the notification data.\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\nFields\n* Requires contractual agreement in Production\nExample with Payload Fields:\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\n\nExample with RF Fields:\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":4,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"snr\":10,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":4,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"snr\":10,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\n\nDownlink API\nSenet provides a simple API for sending downlinks to devices on the Senet Network using HTTP POST. The Downlink API can be leveraged by a Notifier endpoint where in response to receiving uplinks, downlinks are automatically submitted to the downlink queue. All API requests require an authorization key passed either as a parameter or in an authorization header of a Curl command. Senet API keys are 44-character alpha-numeric strings with a prefix of either “AK2:” or “AK3:”.\nImplementing the Downlink API\nThe Senet Downlink API is available to all Portal users. It is implemented as a standard parameterized URL.\nClick on the usernamein the top-right corner.\nClick on the usernamein the top-right corner.\nFrom the dropdown menu, selectEdit Account Info.\nFrom the dropdown menu, selectEdit Account Info.\n\nClick on the Generate API Key buttonon the right side underDeveloper API Keyto generate and display a new API Key.\nClick on the Generate API Key buttonon the right side underDeveloper API Keyto generate and display a new API Key.\n\nCopy the key, storing it securely and safely: this key uniquely identifies the user's account to the Portal. All incoming API calls must be validated with this key in conjunction with registered devices and gateways.\nCopy the key, storing it securely and safely: this key uniquely identifies the user's account to the Portal. All incoming API calls must be validated with this key in conjunction with registered devices and gateways.\nUsing the API Key and parameterized URL described below, downlinks can now be sent to the user's devices with the Downlink API. In the examples below, the \"<API_KEY>\" value should be replaced with the generated key.\nUsing the API Key and parameterized URL described below, downlinks can now be sent to the user's devices with the Downlink API. In the examples below, the \"<API_KEY>\" value should be replaced with the generated key.\nResource URL\nhttps://portal.senetco.io/rest/current/device/sendmsg\nHTTP Method\nPOST\nParameters\nResponse\nCurl Example:\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmsg?eui=FFFFFFFFFFFFFFFF&pdu=0102&confirmed=true&port=88&timeoutMinutes=2\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmsg?eui=FFFFFFFFFFFFFFFF&pdu=0102&confirmed=true&port=88&timeoutMinutes=2\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Multicast\nSend multicast downlink messages to a multicast session allowing a user specified list of gateways to transmit on.\nResource URL\nhttps://portal.senetco.io/rest/current/device/sendmcastmsg\nHTTP Method\nPOST\nParameters\nResponse\nCurl Example\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Clear Downlinks\nClears queued downlink messages. If a specific message ID is supplied, only that downlink will be cleared, otherwise all queued messages are cleared.\nResource URL\nhttps://portal.senetco.io/rest/current/device/clearmsgs\nHTTP Method\nPOST\nParameters\nResponse\nCurl Example\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\n{\"clearedIds\":[00001]}\n}\n{\"clearedIds\":[00001]}\n}\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
625 },
626 {
627 "platform": "Senet",
628 "type": "docs",
629 "source": "https://docs.senetco.io/ap/mgmt",
630 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nOverview\nStates & Transitions\nDevice Fields\nToken Management (MFA)\nRegister Devices\nActivate Devices\nDeactivate Devices\nDevice Update\nTransferring Devices\nFirmware Update Over The Air (FUOTA)\nOverview\nLoRaWAN uses an AES 128 CCM security model with the End Devices and the Join Server both provisioned with the End Device’s root key(s). The Join Server is used to authorize the Device and distribute session keys to the Network Server and Application Server while the End Device generates these same session keys locally. Typically, the manufacturer of Devices supporting Over-The-Air Activation (OTAA) will supply the Application Provider a manifest containing the Device EUI (DevEUI), Join Server EUI, (JoinEUI sometimes called the AppEUI) and Root Key(s) (LoRa v1.0 AppKey, LoRa v1.1 NwkKey and AppKey). Note, as a best practice, the JoinEUI should be specific to the Application Provider. Registration is the process of loading the DevEUI/RootKey(s) and associated meta data for each End Device on to the Join Server. The Activation process informs the network server that the Device is allowed on the network.\nTo activate a Device on the network it must be assigned to aContract. This Device to Contract association establishes a billing relationship and the communications entitlement for a pool of Devices. When Contracts are established, Contract IDs are assigned by Senet and made available to associate in the Registration and Activation processes. When a Device is Activated it transitions to a billable state.\nRegistration and Activation may be accomplished using the UI in the Application Provider Portal or via API with JSON. It is important to note that once a Device has been Joined to the network the Contract assigned to the Device cannot be changed. In the event a Contract was incorrectly assigned, Support can assist with changing the Contract associated with Devices.\nStates & Transitions\n\nDevice Fields\nThe table below details the purpose, expected data type and format of a Device's data fields. The table also identifies when the fields can be set in relation to the Device State Transitions described above.\nDevice Contracts can only be changed when Transitioning to Deactivated or Activated.\nState Transitions cannot be repeated. Example: an Activated Device cannot be Activated.\n* Only Devices which have Joined the Network.\n** Only Devices which have not Joined the Network.\n*** Only Devices configured for ABP - Activation by Personalization.\nToken Management (MFA)\nRegistration requires multi-factor authentication: an authentication token must be requested and then submitted. A token may be requested either during the registration process (see below) or directly from theDevice Managementtable. In response to a token request, an email with a token (six-digit code) is emailed to the requesting user account. By default the token has a one-hour lifetime and a single use count, however the token lifespan can be configured as part of the request process.\nAn Application can have only one active token. Once consumed (use count runs out) or expired, a new one must be requested. Successful requests always replace the current token, regardless of expiration or any remaining uses.\nNote\nDevice Activation and Device Deactivation do not require multi-factor authentication.\nTo get started, navigate to theDevice Managementtable.\nClick thetab\nIf there are multiple applications; from the EUI column click the application EUI to navigate to the Application Detail View. Otherwise the view will automatically be directed to the Application Detail View.\nFrom the Application Detail View, Navigate to the Device Management view by clicking on thebutton\nFrom theDevice Managementtable, select the uploadbutton to start the registration process.\nRegister Devices\nA registered Device must be Activated before it can join the network.\nA Device must be registered before it can be Activated.\nThe Application EUI and Join Server EUI for the Devices must be confirmed during Registration, Activation and Deactivation to verify the association for billing and accounting purposes.\nTo Register Devices, select theRegisteraction, and click the ellipsis to upload a CSV file.\n\nEntering an Authentication Token\nWhen the Upload File button is clicked, the following dialog allows the user to request and submit a token. When a token request is made, the settings for the token lifespan can be configured. These are the same settings that are managed from theApplicationstable.\n\nClicking theRequest Tokenbutton triggers display of the token configuration fields.\n\nNote\nIf multiple users manage the same Application, token management must be coordinated.\nAfter a file is selected and a valid token supplied, a confirmation dialog appears.\nDuring Registration the user is required to provide theActivation Typeand may optionally assign both aDevice ProfileandContract.\nActivation Typeidentifies the join-method used by the Devices being registered, indicating to the Network Server the types of required and optional personalization data in the file being uploaded. The default is 'OTAA - Over The Air Activation'.\nOptionally, theDevice ProfileandContractmay be set. If either association is unknown at the time, 'Do Not Set' may be selected as the may alternately be assigned during Activation. If noContractorDevice Profileis selected as part of either operation, the default settings for each - as configured for the Device's associated Application - are set when the Devices join the Network.\nLastly, informational tags may be applied to the Devices being registered.\n\nNote\nWhen the Activation Type is set to ABP, the NS will provision - as part of Registration - one or both of the session keys (nwkSKey and appSKey) for each Device if not found in the supplied CSV file.\nSelectYesto proceed registering the Devices in the selected file.\nOnce the file's data is validated, a summary is displayed.\nIf the upload fails or the data is invalid, error feedback is provided.\n\nDuplicate Device registrations are specifically not allowed. Attempts to register Devices on more than one Application or Join Server will fail as shown here:\n\nExample LoRaWAN 1.0.X OTAA Registration CSV Format\n####################################################\n# Required Fields: devEui, appKey, \n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n####################################################\ndevEui, appKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui, appKey, \n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n####################################################\ndevEui, appKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.1+ OTAA Registration CSV Format\n####################################################\n# Required Fields: devEui, appKey, nwkKey\n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n####################################################\ndevEui, appKey, nwkKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,D10922FA7B117BE10B38C06C04A363BB,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,9309DD725B3864DDF7ED6B9545E2AA16,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui, appKey, nwkKey\n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n####################################################\ndevEui, appKey, nwkKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,D10922FA7B117BE10B38C06C04A363BB,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,9309DD725B3864DDF7ED6B9545E2AA16,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.0 ABP Only or OTAA with Active Session Registration CSV Format\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, nwkSKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n# Optional OTAA Fields: appKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, nwkSKey, appKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, nwkSKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n# Optional OTAA Fields: appKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, nwkSKey, appKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.1+ ABP Only or OTAA with Active Session Registration CSV Format\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n# Optional OTAA Fields: appKey, nwkKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, appKey, nwkKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,DFAE2CC785B7665EB2F5F680BA2F7A53,3C8994815DD251CBB40D7E2174A6224C,710BC6BC680AA8D6E9383CA7EA4F5427,0B76FAB3C1A189403C145BF1FCB08647,5106140251972BDF23D2140BB67802FB,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,779959C52180C5D700F8A64E6A9A9828,62D7D043B482727294FC63EE68BE6D35,C7A0FF1B1BF0CB09A4D3CC5CC9D72FAF,E4FFBA476D97E00D7E38EFD6BF883A32,03B79A7CDC2554CA9669C0DE243015B1,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n# Optional OTAA Fields: appKey, nwkKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, appKey, nwkKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,DFAE2CC785B7665EB2F5F680BA2F7A53,3C8994815DD251CBB40D7E2174A6224C,710BC6BC680AA8D6E9383CA7EA4F5427,0B76FAB3C1A189403C145BF1FCB08647,5106140251972BDF23D2140BB67802FB,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,779959C52180C5D700F8A64E6A9A9828,62D7D043B482727294FC63EE68BE6D35,C7A0FF1B1BF0CB09A4D3CC5CC9D72FAF,E4FFBA476D97E00D7E38EFD6BF883A32,03B79A7CDC2554CA9669C0DE243015B1,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nDuplicate Application Keys\nDuplicate Application keys are allowed but strongly discouraged as a potential security risk. If duplicate Application keys are detected in the CSV file, the following warning is displayed:\n\nActivate Devices\nAn Activated Device may join the network and start uplinking.Devices in this state are not considered \"Active\" until they have joined the network. Once a Device has joined the network, it appears in theDevicestable.\nRequired column names in the CSV header:devEui\nPopulate thedevEuicolumn with previously registered or Deactivated Device EUIs.\nSelectActivatein the action, and click the ellipsis to upload a CSV file of previously registered Devices.\n\nAfter a file is selected a confirmation dialog appears.\nThis dialog requires the user to choose a Contract and Device Profile for the Devices in the csv file.\nOptionally, informational tags may be updated or applied to this group of Devices.\nSelectYesto upload the selected file.\nNote\nDevice Profiles and Contracts are set when a Device joins the network. Prior to joining, these values can be preselected. The value selected during activation will override the value selected during registration. If \"Current or Default\" is selected, the value assigned during registration will be used. If a Device was not assigned a Contract or Profile during registration, its Application's defaults will be used. After a Device joins, the Contract can be updated through deactivation.\n\nThe results of the activation are shown after the file is processed.\n\nNote\nIf not included in the CSV at Registration, Activation for ABP Devices will provision a devAddr for each device. Since the NS may have previously provisioned the nwkSKey and appSKey parameters as part of Registration, the Activation Results dialog allows the user to export of all the devices' ABP data to CSV formatted file. The 'Export' button is available only when the Activation is completed by uploading the CSV file used for Registration.\n\nExample LoRaWAN 1.0.X OTAA Activation CSV Format\n####################################################\n# Required Fields: devEui, appKey, \n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n####################################################\ndevEui, appKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui, appKey, \n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n####################################################\ndevEui, appKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.1+ OTAA Activation CSV Format\n####################################################\n# Required Fields: devEui, appKey, nwkKey\n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n####################################################\ndevEui, appKey, nwkKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,D10922FA7B117BE10B38C06C04A363BB,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,9309DD725B3864DDF7ED6B9545E2AA16,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui, appKey, nwkKey\n# Optional Fields: joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n####################################################\ndevEui, appKey, nwkKey, joinEui, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\nAA11111F00000001,0B76FAB3C1A189403C145BF1FCB08647,D10922FA7B117BE10B38C06C04A363BB,FFFFFF0020001000,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,E4FFBA476D97E00D7E38EFD6BF883A32,9309DD725B3864DDF7ED6B9545E2AA16,FFFFFF0020001000,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.0 ABP Only or OTAA with Active Session Activation CSV Format\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, nwkSKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n# Optional OTAA Fields: appKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, nwkSKey, appKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, nwkSKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\n# Optional OTAA Fields: appKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, nwkSKey, appKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,0B76FAB3C1A189403C145BF1FCB08647,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,E4FFBA476D97E00D7E38EFD6BF883A32,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nExample LoRaWAN 1.1+ ABP Only or OTAA with Active Session Activation CSV Format\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n# Optional OTAA Fields: appKey, nwkKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, appKey, nwkKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,DFAE2CC785B7665EB2F5F680BA2F7A53,3C8994815DD251CBB40D7E2174A6224C,710BC6BC680AA8D6E9383CA7EA4F5427,0B76FAB3C1A189403C145BF1FCB08647,5106140251972BDF23D2140BB67802FB,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,779959C52180C5D700F8A64E6A9A9828,62D7D043B482727294FC63EE68BE6D35,C7A0FF1B1BF0CB09A4D3CC5CC9D72FAF,E4FFBA476D97E00D7E38EFD6BF883A32,03B79A7CDC2554CA9669C0DE243015B1,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n>>>>>>> 833b5a8 (Case 16856: Docs - update registration examples.)\n####################################################\n# Required Fields: devEui\n# Optional Fields: joinEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, mcRootKey\n# Optional OTAA Fields: appKey, nwkKey (Used when OTAA with Active Session is migrated to this LNS)\n####################################################\ndevEui, devAddr, appSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey, appKey, nwkKey, joinEui, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devProfId, devClass, txPeriod, genAppKey\nAA11111F00000001,1200FFF1,8B89D0426793B888821A42E78B5211F8,79A76962D782759C13569D68CFFAAFB1,DFAE2CC785B7665EB2F5F680BA2F7A53,3C8994815DD251CBB40D7E2174A6224C,710BC6BC680AA8D6E9383CA7EA4F5427,0B76FAB3C1A189403C145BF1FCB08647,5106140251972BDF23D2140BB67802FB,FFFFFF0020001000,1007,234,42.356959,-71.053271,tag1;tag2,metadata1,WATER_SENSOR,220,C,3600,14A9178C8B2A440527946522ADCEFB54\nAA11111F00000002,1200FFF2,9B444E5887DEC31A9CF7B0AB2E5687C6,E366E5678D847DE56AAD880252C0234A,779959C52180C5D700F8A64E6A9A9828,62D7D043B482727294FC63EE68BE6D35,C7A0FF1B1BF0CB09A4D3CC5CC9D72FAF,E4FFBA476D97E00D7E38EFD6BF883A32,03B79A7CDC2554CA9669C0DE243015B1,FFFFFF0020001000,2045,127,42.356779,-71.065271,tag1,metadata2,WATER_SENSOR,226,A,86400,D573B50B478857D6F23B0E73E5A7D25D\n>>>>>>> 833b5a8 (Case 16856: Docs - update registration examples.)\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nDeactivate Devices\nOnce Deactivated, Devices cannot join or rejoin the network. However, a previously joined Device can continue uplinking after deactivation.\nA Device must be registered before it can be Deactivated.\nA Device that is administratively Deactivated but continues to communicate on the network is in an active billing state. To avoid billing for Deactivated Devices, they must not be heard by the network for the entire billing cycle.\nRequired column names in the CSV header:devEui\nPopulate thedevEuicolumn with previously Activated or registered Device EUIs.\nSelectDeactivatein the action, and click the ellipsis to upload a CSV file of previously registered or Activated Devices.\n\nAfter a file is selected a confirmation dialog appears. This dialog requires the user to choose a Contract for the Devices in the csv file. The Device's current Contract can be used by selectingCurrent.\nNote\nThe Contract can be updated if the Devices are Activated from the Deactivated state.\n\nThe results of the deactivation are shown after the file is processed.\n\nExample Deactivation CSV Format\n####################################################\n# Required Fields: devEui\n####################################################\ndevEui\nAA11111F00000001\nAA11111F00000002\n####################################################\n# Required Fields: devEui\n####################################################\ndevEui\nAA11111F00000001\nAA11111F00000002\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nDevice Update\nUpload a CSV file to update Device fields for all Registered and Activated Devices. The Devices' latitude, longitude, tags, metadata, devType, devClass, fwVer, appKey and nwkKey fields can be edited. From theDevicestable, select the uploadbutton to display the window below.\nApplication Keys are updated from theDevice Managementtable using the same process. Click on thebutton to perform a key update.\n\nWhen thebutton is clicked, a file upload window will be displayed. After a file is selected, click on theUpload Fileto proceed.\n\nTags in the update can append, replace or delete existing tags based on the selected operation. The tags can be specified for individual Devices using a tags column in the csv file or for the full set of Devices using the tags input. The uploaded latitude and longitude will always replace the existing Device data. SelectYesto upload the previously selected file.\nIf the upload succeeds and the data is valid, an upload summary and any messages from the server will be displayed. If the upload fails or the data is invalid, an error message will be displayed. Devices included in the CSV will only be skipped if they do not exist.\nExample Update CSV Format\n###################################################################################\n# Required Fields: devEui\n# Optional Fields: appKey, nwkKey, mcRootKey, \n# appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey\n# fCntUp, fCntDown, lat, lng, tags, metadata, devType, devClass, fwVer, txPeriod, devProfId\n##################################################################################\ndevEui, appKey, nwkKey, mcRootKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devClass, fwVer, txPeriod, devProfId, appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey\nAA11111F00000001,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11,,,256,20,42.356959,-71.053271,tag1;tag2-LW10,metadata1,WATER_SENSOR,A,1.0.20,3600,222,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17,,,,,\nAA11111F00000002,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23,1057,90,42.356779,-71.065271,tag1;tag2-LW11,metadata2,WATER_SENSOR,B,2.1.2,86400,223,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C\n###################################################################################\n# Required Fields: devEui\n# Optional Fields: appKey, nwkKey, mcRootKey, \n# appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey\n# fCntUp, fCntDown, lat, lng, tags, metadata, devType, devClass, fwVer, txPeriod, devProfId\n##################################################################################\ndevEui, appKey, nwkKey, mcRootKey, fCntUp, fCntDown, lat, lng, tags, metadata, devType, devClass, fwVer, txPeriod, devProfId, appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jSIntKey, jSEncKey\nAA11111F00000001,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF11,,,256,20,42.356959,-71.053271,tag1;tag2-LW10,metadata1,WATER_SENSOR,A,1.0.20,3600,222,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF14,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF15,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF17,,,,,\nAA11111F00000002,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF21,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF22,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF23,1057,90,42.356779,-71.065271,tag1;tag2-LW11,metadata2,WATER_SENSOR,B,2.1.2,86400,223,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF24,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF16,,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF19,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B,FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C\nNote\nFile must be saved as plain text - comma delimited, not UTF-8\nNote\nThe appKey, nwkKey, mcRootKey, appSKey, genAppKey, mcKEKey, nwkSKey, fNwkSIntKey, sNwkSIntKey, nwkSEncKey, jsIntKey, and jsEncKey field values are 32 character hexadecimal values used to secure Device communication: they should be both distinct and uniquely defined for each Device. The values shown above should not be used; they are are provided as examples only.\nTransferring Devices\nDevices can be transferred between Join Servers and Accounts. These functions are accessed by clicking on thebutton in the Device Management view and selecting the desired type from the menu. The option to transfer a Device between Join Servers is only enabled if there are multiple Join Servers associated with the Application.\n\nTransferring Devices Between Join Servers\nSelecting the option toTransfer Devices to New Join Serverlaunches a dialog that displays the current Join Server and a dropdown containing all Join Servers currently associated with the Application. Select the desired destination Join Server, enter the EUI of the current Join Server to confirm the transfer and press the OK button to continue. If the operation is successful, the Device should appear in the Device Management table of the destination Join Server.\n\nTransferring Devices Between Accounts\nSelecting the option toTransfer Devices to Another Accountlaunches a dialog containing multiple several fields that are filled in to complete the transfer. These include:\nCurrent Application API Key (Required)\nTarget Application EUI (Required)\nTarget Application API Key (Required)\nTarget Contract ID (Required)\nTarget Profile ID (Optional)\n\nIf several Devices are selected for transfer, the operation may take some time to complete. When the dialog is opened while an ongoing transfer operation is in progress, a progress bar is shown with the current status.\n\nOnce the transfer completes, the dialog will show the final status.\n\nAdding a Device to an Unknown or Unregistered Join Server\nOccasionally it may be necessary to Register a single Device with a Join Server that has not been Registered. Such Devices can be added by selecting the Wildcard Join Server from the dropdown in the Device Management view.\n\nClick thebutton to launch the Add Device dialog.\nEnter the required Device Registration information including Device EUI, Application Key, Contract, Device Profile, and Join EUI or * if the Join EUI is not known.\nClick the Add New Device button to save the information and add the Device.\n\nOnce the information is entered and saved, the Device should appear in the Wildcard Join Server's list of Devices.\nFirmware Update Over The Air (FUOTA)\nDevice Requirements\nImplementation of LoRaWAN FUOTA Ver 1.0.0 or 2.0.0 as specified by the LoRa-Alliance's FUOTA Working Group.\nThe ability to transition from Class A mode to either Class C or B multicast operation and back again to Class A.\nFunctionality to manage the additional power consumption associated with large data transport operations.\nOS-level primitives and on-board memory to support receiving and storing the update file.\nA methodology for replacing some or all of its running image\nNote\nReference implementations are available fromStackforceandArm Mbed.\nResponsibilities\nLoRaWAN and Regulatory (FCC, ETSI, etc) certification may be impacted by a firmware update.\nDevice vendors must work with their radio-module manufacturers to determine support for the FUOTA protocol layers and whether the radio module itself can be updated by either the host processor or the application stack running on the module. Requirements may be simpler if updates only involve a configuration file rather than an entire (or partial) firmware image.\nApplication Providers must have a methodology for identifying Devices that fail an update.\nPre-Requisites\nA list of Devices to update\nA full firmware update or patch file to distribute\nA 4-byte descriptor value of the file (described inLoRaWAN Fragmented Data Block Transport Specification v1.0.0)\nProcess\nFrom the Devices table within the Application Details view, select one or more rows of Devices to update, then click the 'Firmware Update' button:\nFrom the Devices table within the Application Details view, select one or more rows of Devices to update, then click the 'Firmware Update' button:\n\nOnce the 'Update Devices' dialog launches, fill-in the form to set the image-transfer parameters. Each field is described below.Contract:The selected Contract determines how the Customer is billed by Senet for the FUOTA events.Start Time:The time scheduled to initialize the firmware update. A minimum of 3 successful downlinks are required to set up the multicast group. This time must accommodate the largest uplink interval among the group's Devices as well as consider potential packet loss.NoteThe progression of multicast setup downlinks [McGroupSetup --> McGroupCSess --> FragSessSetup] will not proceed until all corresponding answer uplinks are received.Nwk--McGroupSetupReq-->DevNwk<--McGroupSetupAns--DevNwk--McGroupCSessReq-->DevNwk<--McGroupCSessAns--DevNwk--FragSessSetupReq-->DevNwk<--FragSessSetupAns--DevFragmentation:Currently supported methods used to fragment the file:Forward Error Correction:As defined by the FUOTA specification.Retransmit:The entire file is transmitted multiple times.Redundancy:Per the Fragmentation method selected:Forward Error Correction:Redundancy is the percent of additional frames transmitted based on the frame count required to transmit the file once. For example, a redundancy of 30% for 100 frames would generate a total packet count of 130.Retransmits:Redundancy is the total number of times the file will be sent. For example, a redundancy of 1 for a 100 frames would generate a total packet count of 200.Tx Channel:Channel frequency that the file will be multicast on. Should only be modified in response to local interference on the default channel.Tx Data Rate:Data Rate that the file will be multicast at. May be modified to adjust time on air or increase the probability of success.FUOTA Version:The FUOTA version implemented by the targeted group of Devices. Versions 1.0.0 and 2.0.0 are incompatible.Multi-Package Support:This may be set to 'Enabled' if the targeted Devices support theLoRaWAN Multi Package Access Protocolas defined by LoRa-Alliance's FUOTA Working Group.Packet Delay (ms):The minimum delay allowed between transmission of the data fragment packets. Any modifications required due to regional duty-cycle restrictions will be handled by the Network.Descriptor:The 4-byte value provided to the multicast group in the FragSessSetupReq that identifies the file to be sent.Device Class:The Class-mode - either Class B or C - the targeted Devices will transition to in order to receive the file, based on their implementation(s).Max Fragment Size:The maximum fragment size allow for transmit. This setting should accommodate Devices with fragment size limitations. When set to -1, the LNS sets this value to the maximum downlink size allowed for the region.Upload File:The binary file to be multicast to the targeted Device group, using the above parameters.\nOnce the 'Update Devices' dialog launches, fill-in the form to set the image-transfer parameters. Each field is described below.\n\nContract:The selected Contract determines how the Customer is billed by Senet for the FUOTA events.\nStart Time:The time scheduled to initialize the firmware update. A minimum of 3 successful downlinks are required to set up the multicast group. This time must accommodate the largest uplink interval among the group's Devices as well as consider potential packet loss.\nNote\nThe progression of multicast setup downlinks [McGroupSetup --> McGroupCSess --> FragSessSetup] will not proceed until all corresponding answer uplinks are received.\nNwk--McGroupSetupReq-->DevNwk<--McGroupSetupAns--DevNwk--McGroupCSessReq-->DevNwk<--McGroupCSessAns--DevNwk--FragSessSetupReq-->DevNwk<--FragSessSetupAns--Dev\nNwk--McGroupSetupReq-->DevNwk<--McGroupSetupAns--DevNwk--McGroupCSessReq-->DevNwk<--McGroupCSessAns--DevNwk--FragSessSetupReq-->DevNwk<--FragSessSetupAns--Dev\nFragmentation:Currently supported methods used to fragment the file:\nForward Error Correction:As defined by the FUOTA specification.\nForward Error Correction:As defined by the FUOTA specification.\nRetransmit:The entire file is transmitted multiple times.\nRetransmit:The entire file is transmitted multiple times.\nRedundancy:Per the Fragmentation method selected:\nForward Error Correction:Redundancy is the percent of additional frames transmitted based on the frame count required to transmit the file once. For example, a redundancy of 30% for 100 frames would generate a total packet count of 130.\nForward Error Correction:Redundancy is the percent of additional frames transmitted based on the frame count required to transmit the file once. For example, a redundancy of 30% for 100 frames would generate a total packet count of 130.\nRetransmits:Redundancy is the total number of times the file will be sent. For example, a redundancy of 1 for a 100 frames would generate a total packet count of 200.\nRetransmits:Redundancy is the total number of times the file will be sent. For example, a redundancy of 1 for a 100 frames would generate a total packet count of 200.\nTx Channel:Channel frequency that the file will be multicast on. Should only be modified in response to local interference on the default channel.\nTx Data Rate:Data Rate that the file will be multicast at. May be modified to adjust time on air or increase the probability of success.\nFUOTA Version:The FUOTA version implemented by the targeted group of Devices. Versions 1.0.0 and 2.0.0 are incompatible.\nMulti-Package Support:This may be set to 'Enabled' if the targeted Devices support theLoRaWAN Multi Package Access Protocolas defined by LoRa-Alliance's FUOTA Working Group.\nPacket Delay (ms):The minimum delay allowed between transmission of the data fragment packets. Any modifications required due to regional duty-cycle restrictions will be handled by the Network.\nDescriptor:The 4-byte value provided to the multicast group in the FragSessSetupReq that identifies the file to be sent.\nDevice Class:The Class-mode - either Class B or C - the targeted Devices will transition to in order to receive the file, based on their implementation(s).\nMax Fragment Size:The maximum fragment size allow for transmit. This setting should accommodate Devices with fragment size limitations. When set to -1, the LNS sets this value to the maximum downlink size allowed for the region.\nUpload File:The binary file to be multicast to the targeted Device group, using the above parameters.\nWhile the Device sessions are initializing, a 'Job Status: Queued' indicates when the Firmware Update is targeted to begin:\nWhile the Device sessions are initializing, a 'Job Status: Queued' indicates when the Firmware Update is targeted to begin:\n\nApplication commands are sent to setup the multicast and fragmentation sessions with the Devices:\nApplication commands are sent to setup the multicast and fragmentation sessions with the Devices:\n\n\nThe Status of the Firmware Update is updated as Fragments are sent:\nThe Status of the Firmware Update is updated as Fragments are sent:\n\nOnce all Fragments are sent, the Update status reflects the completed Firmware Update:\nOnce all Fragments are sent, the Update status reflects the completed Firmware Update:\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
631 },
632 {
633 "platform": "Senet",
634 "type": "docs",
635 "source": "https://docs.senetco.io/dev/gw/gwReleases/",
636 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nGateway Release Notes\n02_24_28 - Release Notes\n02_22_10 - Release Notes\n02_21_10 - Release Notes\n02_20_14 - Release Notes\nGateway Release Notes\nInformation on key features and changes made to the Senet Packet Forwarder\n02_24_28 - Release Notes\nMultitech\nAdded support for MultiTech mPower OS version 6.3.0+.\nAdded support for MultiTech Conduit IP67 200 series Gateways.\nAdded support for MultiTech mCard MTAC-003 LoRa accessory cards.\n02_22_10 - Release Notes\nTektelic\nAdded support for Tektelic Micro 8-Channel indoor BSP v4.0.2+.\nAdded support for Tektelic Macro 16-Channel outdoor BSP v5.1.5.\nAdded support for Tektelic Mega 64-Channel outdoor BSP v5.0.2+.\nAdded support for Tektelic Enterprise 8-Channel outdoor BSP v2.0.1+.\nAdded support for Tektelic Enterprise 8-Channel outdoor BSP v2.1.2+.\nAddressed an issue decoding GPS locations from Tektelic Gateways in the Eastern Hemisphere.\nAddressed an issue where querying the cellular modem statistics may fail with Tektelic Gateways.\nAdded support for detecting and reporting Tektelic MQTT Bridge operation to the LoRa Network Server.\nAdded auto-removal of mqtt-bridge and Tektelic Packet Forwarder upon installation of the Senet Packet Forwarder RAN image.\n02_21_10 - Release Notes\nMultitech\nAdded support for MultiTech mPower OS version 6.0+.\nAdded support for detecting alternate LoRa Packet Forwarders. This condition is reported to the Network Server under gateway System Events.\nAddressed an issue where a show-support may not upload to the LoRa Network Server.\nImplemented a change to persist the Senet Packet Forwarder installation during MultiTech mPower OS and patch updates.\n02_20_14 - Release Notes\nMultitech\nAddressed an issue where installation may use SD Card if present.\nAdded support for re-configuration of active cellular interfaces.\nAdded support for sending GPS data to the Network Server on GPS-capable models.\nAddressed an issue where the Gateway OS version reported to the Network Server may be inaccurate.\nAddressed and issue where the Senet Forwarder application may not stop during an uninstall.\nAdded support for reporting Gateway temperature to the Network Server on models that provide this data.\nAdded an option to disable the firewall on Gateways with the RAN image installed\nTektelic\nAdded support for Tektelic Micro 8-Channel indoor BSP v3.3.7+.\nAdded support for Tektelic Enterprise 8-Channel outdoor BSP v1.1.6+.\nAdded support for Tektelic Macro 16-Channel outdoor BSP v4.3.6+.\nAdded support for Tektelic Mega 64-Channel outdoor BSP v4.3.8+.\nAddressed an issue where upon a cold start it may take up to ten minutes to start the Senet Packet Forwarder.\nAdded an option to disable the firewall on Gateways with the RAN image installed\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
637 },
638 {
639 "platform": "Senet",
640 "type": "docs",
641 "source": "https://docs.senetco.io/dev/streaming/myDevices/",
642 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nmyDevices Cayenne\nPlatform Setup\nNotifier Setup\nmyDevices Cayenne\nmyDevices Cayenne (cayenne.mydevices.com) is the world’s first drag and drop IoT project builder that empowers developers, designers and engineers to quickly prototype and share their connected device projects. Cayenne was designed to help users create Internet of Things prototypes and then bring them to production.\nPlatform Setup\nTo get started with Cayenne, add a new Device/Widget from the LoRa->Senet list of devices. Select a Senet Packet Format aware device or other devices. Enter the Device Name, DevEUI, and Location (if device doesn't move) and click Add Device to view the device in the myDevices platform.\n\nNotifier Setup\nThere is no additional configuration.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
643 },
644 {
645 "platform": "Senet",
646 "type": "docs",
647 "source": "https://docs.senetco.io/ap/api",
648 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nAPI Reference\nUplink API\nDownlink API\nDownlink API - Multicast\nDownlink API - Clear Downlinks\nDevice Onboarding APIs\nDevice Registration API\nDevice Activation API\nDevice Deactivation API\nDevice Update API\nDevice Export API\nDevice Transfer API\nTask Status API\nFUOTA API\nMulticast API\nAPI Reference\nThe Application REST APIs allow system administrators and Application Providers to send downlinks and Register/Activate/Deactivate Devices for an Application. An API key is required to authenticate API usage. API keys are created and managed in theAPI Keysview.\nResponse messages are JSON-formatted.\nTo get started with the Application APIs, see theSwagger API Documentation.\nUplink API\nDevice uplink messages heard by one or more gateways are relayed to the network server which in turn the server securely forwards the data to an IoT platform.\nFor more information on the data streaming endpoint implementation, see theSwagger Data Stream Documentation.\nApplication Payload\nIn addition to streaming the payload data (pdu), network information is included. Optionally, RF information about each transmission can be added by enabling \"Include RF Data\" in the notification target's configuration.\nThe Senet Network supports the standardJSONobject model where each object contains one-to-many key/values pairs. TheJSONobject is in the following format:\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\nNote:Senet may add additional fields during future Portal updates. Please ensure that the Application ignores any unknown fields and continue to parse the notification data. Duplicate uplinks are also available on Production with a Contract.\nAll JSON-formatted data contains the following default fields:\nFields\n* Requires contractual agreement\nExample:\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\nExample with RF Fields:\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":0,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":0,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\nBatching\nBatching is the process of delaying the forwarding of a notification to see if it can be grouped with other notifications going to the same endpoint. Batching is more efficient for both the Network Server and for the Customer's endpoint. Many messages can be transferred in the same time that it takes to transfer a single message.\nJSON Format:\nExample: Batching Disabled.Each notification is forwarded northbound to the customer individually using the JSON object model.\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}\nExample: Batching Enabled.A set of notifications received by the Network Server (within a few milliseconds of each other) are forward to the customer in a JSON Array.\n[\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}, \n{\"snr\":8.75, \"devEui\":\"000000000000000B\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.722Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-61, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":907.9, \"pdu\":\"01080100EF020012\", \"channel\":28, \"seqno\":23423}, \n{\"snr\":9.25, \"devEui\":\"000000000000000C\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.723Z\", \"joinId\":2, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-55, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.5, \"pdu\":\"01080100EF020012\", \"channel\":56, \"seqno\":34532}, \n{\"snr\":8.75, \"devEui\":\"000000000000000E\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.724Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-61, \"value1\":247, \"value2\":18, \"port\":1, \"freq\":907.7, \"pdu\":\"01080100F7020012\", \"channel\":27, \"seqno\":76453}, \n{\"snr\":10.75, \"devEui\":\"000000000000000F\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.725Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-60, \"value1\":247, \"value2\":18, \"port\":1, \"freq\":902.5, \"pdu\":\"01080100F7020012\", \"channel\":1, \"seqno\":18743}\n]\n[\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}, \n{\"snr\":8.75, \"devEui\":\"000000000000000B\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.722Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-61, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":907.9, \"pdu\":\"01080100EF020012\", \"channel\":28, \"seqno\":23423}, \n{\"snr\":9.25, \"devEui\":\"000000000000000C\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.723Z\", \"joinId\":2, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-55, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.5, \"pdu\":\"01080100EF020012\", \"channel\":56, \"seqno\":34532}, \n{\"snr\":8.75, \"devEui\":\"000000000000000E\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.724Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-61, \"value1\":247, \"value2\":18, \"port\":1, \"freq\":907.7, \"pdu\":\"01080100F7020012\", \"channel\":27, \"seqno\":76453}, \n{\"snr\":10.75, \"devEui\":\"000000000000000F\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.725Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-60, \"value1\":247, \"value2\":18, \"port\":1, \"freq\":902.5, \"pdu\":\"01080100F7020012\", \"channel\":1, \"seqno\":18743}\n]\nWhen batching is enabled, if only one message is available to be forwarded, it will still be forwarded using the batch format.\n[\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}\n]\n[\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}\n]\nDownlink API\nSenet provides a simple API for sending Application downlinks to devices. In addition to the Application Payload, users can specify the LoRa-level FPort and Confirmed settings, as well as a timeout threshold for how long the Network waits until foregoing transmission or receiving acknowledgement when expected. Downlink queues support up to 3 downlinks and are cleared in one of the following ways: transmission, timeout, a newer downlink request with the 'clear' parameter set 'True', or a separate request to theClear Downlinks API.\nNotifier endpoint implementations can leverage the Downlink API in numerous ways. For example, a downlink POST request is automatically triggered in response to an uplink notification. With low-enough round-trip time between the Notifier and its endpoint, including the 'immediate' parameter set to 'True' in the downlink request ensures the Network will send it against one of the current uplink's receive windows.\nWhen Downlink requests are successful, the response will include a unique-, numeric message identifier ('msgId'). This is distinct from the sequence number (FCntDn) allocated when a downlink is sent, allowing traceability of specific downlink Application payloads.\nAll Downlink API requests require an authorization key passed either as a URL parameter or in an authorization header. Senet API keys are 44-character alpha-numeric strings with a prefix of either “AK2:” or “AK3:”. SeeAPI Key Managementfor more information about acquiring API Authorization Keys.\nSend Downlink To Device\nhttps://api.senetco.io/rest/integration/device/sendmsg\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://api.senetco.io/rest/integration/device/sendmsg?eui=AAAAAAAAAAAAAAAA&pdu=0102030405060708090a0b0c0d0e0f&confirmed=true&port=88&timeoutMinutes=2\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://api.senetco.io/rest/integration/device/sendmsg?eui=AAAAAAAAAAAAAAAA&pdu=0102030405060708090a0b0c0d0e0f&confirmed=true&port=88&timeoutMinutes=2\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Multicast\nSend multicast downlink messages to a multicast session allowing a user specified list of Base Stations to transmit on.\nhttps://api.senetco.io/rest/integration/device/sendmcastmsg\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Clear Downlinks\nClears queued downlink messages. If a specific message ID is supplied, only that downlink will be cleared, otherwise all queued messages are cleared.\nhttps://api.senetco.io/rest/integration/device/clearmsgs\n\nPOST\n\ncurl -H\"authorization: AK2:APIKEY\"-XPOST\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\ncurl -H\"authorization: AK2:APIKEY\"-XPOST\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\n{\"clearedIds\":[00001]}\n}\n{\"clearedIds\":[00001]}\n}\nDevice Onboarding APIs\nSenet offers a series of APIs that are used to automate the process of onboarding Devices onto the Senet Network, and facilitate the management of these Devices throughout their lifecycle. The onboarding process encompasses the Registration of Devices (loading the DevEUI/RootKey(s) onto the Join Server), followed by the Activation of those Devices (authorizing the DevEUIs to Join the network). Devices may be Deactivated once they have Joined the network or prior to Joining the network, in which case a Join attempt will be prevented. Devices that Joined the network in a Deactivated state and continue to communicate on the network, remain in a billable state until the Device is no longer communicating or is forced to re-Join the network.\nThe APIs were architected with the expectation the onboarding workflows are used for bulk transactions, such that the Registration, Activation and Deactivation calls would apply to a large number of Devices. To validate the completion of the workflow, calling theTask Status APIis required to verify that the requested operation completes successfully prior to initiating another job request. Only one job request can run at a time per Application. Additional API calls initiated prior to the completion of a running job will result in a failure.\nThe Registration of 1,000 Devices would typically take around 1 second, while Registration of 10,000 Devices completes in less than 5 seconds. Activation of 1,000 Devices will take around 5 seconds and it is expected that Activation of 10,000 Devices will complete in under 40 seconds.\nPlease seeOverviewin Device Management for detailed information on the Device Registration LifeCycle along with associating Contracts and other metadata to each Device.\nDevice Registration API\nThe first step in the onboarding process, Registration accomplishes the following:\nProvisions the Device EUI-to-Root Key(s) mappings to the appropriate Join Server.\nInitial Customer Contract association for and billing.\nInitial assignment of the Device Profile for LoRaWAN management.\nNote:Registration of a Device doesnottransition it to an active billing state.\nNote:If \"Do Not Set\" is selected for eitherContractorDevice Profileduring Registration, these may set during Activation.\nNote:Registration requests must be submitted with a security token. Refer toDevice Registrationfor information about obtaining a token.\nBecause Registration may involve large amounts of data, this API works in conjunction with theTask Status API: responses to successful Registration requests contain a Task Job ID that can be used to monitor the progress of the Registration task. Although only one task can run per Application, Senet recommends ensuring previous operations are complete prior to initiating a new Device Management job.\nhttps://api.senetco.io/rest/integration/device/register\n\nPOST\n\n\n\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC1\"}\n ]}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC1\"}\n ]}\n\n\n{\"data\":[{\"devEui\":\"FFFFFFFFFFFFFFF1\",\"devAddr\":\"FFFFFFFF\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":40.7484445,\"lng\":-73.9878584,\"tags\":\"tag1\",\"devType\":\"WATER_SENSOR\"},{\"devEui\":\"FFFFFFFFFFFFFFF2\",\"devAddr\":\"FFFFFFFF\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\n . . .\n ]}\n{\"data\":[{\"devEui\":\"FFFFFFFFFFFFFFF1\",\"devAddr\":\"FFFFFFFF\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":40.7484445,\"lng\":-73.9878584,\"tags\":\"tag1\",\"devType\":\"WATER_SENSOR\"},{\"devEui\":\"FFFFFFFFFFFFFFF2\",\"devAddr\":\"FFFFFFFF\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\n . . .\n ]}\nA callback URL can be specified in the request to receive results after a bulk operation is complete. The server will POST the results in JSON format to the callback URL.\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC1\"}\n ],\n \"callback\":{ \n \"url\":\"https://example-callback.com/endpoint\",\n \"headers\":{ \n \"X-API-Key\":\"123456789abcdef\"}}}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC1\"}\n ],\n \"callback\":{ \n \"url\":\"https://example-callback.com/endpoint\",\n \"headers\":{ \n \"X-API-Key\":\"123456789abcdef\"}}}\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\",\"appKey\":\"0ABCDEF0120000010A00000012000001\",\"lat\":42.356959,\"lng\":-71.053271},{\"devEui\":\"0A00000012000002\",\"appKey\":\"0ABCDEF0120000010A00000012000002\",\"lat\":42.356779,\"lng\":-71.065271}]}'\"https://api.senetco.io/rest/integration/device/register?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\",\"appKey\":\"0ABCDEF0120000010A00000012000001\",\"lat\":42.356959,\"lng\":-71.053271},{\"devEui\":\"0A00000012000002\",\"appKey\":\"0ABCDEF0120000010A00000012000002\",\"lat\":42.356779,\"lng\":-71.065271}]}'\"https://api.senetco.io/rest/integration/device/register?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"FFFFFFFFFFFFFFF1\",\"devAddr\":\"FFFFFFF1\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":42.356959,\"lng\":-71.053271}, {\"devEui\":\"FFFFFFFFFFFFFFF2\",\"devAddr\":\"FFFFFFF2\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":42.356959,\"lng\":-71.053271}]}'\"https://api.senetco.io/rest/integration/device/register?actType=ABP&appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"FFFFFFFFFFFFFFF1\",\"devAddr\":\"FFFFFFF1\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":42.356959,\"lng\":-71.053271}, {\"devEui\":\"FFFFFFFFFFFFFFF2\",\"devAddr\":\"FFFFFFF2\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":42.356959,\"lng\":-71.053271}]}'\"https://api.senetco.io/rest/integration/device/register?actType=ABP&appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\nDevice Activation API\nActivate registered or deactivated Devices on the managed Application. An Activated Device may join the network and start uplinking.\nNote:Activating a Device transitions it to an active billing state.\nBecause Activation may involve large amounts of data, this API works in conjunction with theTask Status API: responses to successful Activation requests contain a Task Job ID that can be used to monitor the progress of the Activation task. Although only one task can run per Application, Senet recommends ensuring previous operations are complete prior to initiating a new Device Management job.\nBulk Activation\nhttps://api.senetco.io/rest/integration/device/activate\n\nPOST\n\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\"}\n ]}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\"}\n ]}\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\",\"lat\":42.356959,\"lng\":-71.053271},{\"devEui\":\"0A00000012000002\",\"lat\":42.356779,\"lng\":-71.065271}]}'\"https://api.senetco.io/rest/integration/device/activate?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\",\"lat\":42.356959,\"lng\":-71.053271},{\"devEui\":\"0A00000012000002\",\"lat\":42.356779,\"lng\":-71.065271}]}'\"https://api.senetco.io/rest/integration/device/activate?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\nIndividual Activation\nhttps://api.senetco.io/rest/integration/device/activateOne\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-XPOST\"https://api.senetco.io/rest/integration/device/activateOne?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-XPOST\"https://api.senetco.io/rest/integration/device/activateOne?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271\"\n{\n \"message\":\"Device successfully Activated\"}\n{\n \"message\":\"Device successfully Activated\"}\nDevice Deactivation API\nDeactivated Devices cannot join or rejoin the Network. Previously joined Devices that are Deactivated will continue uplinking in the context of their previously established security session\nNote:Deactivated Devices that continue communicating on the Network are in an active billing state. The Network must not hear Deactivated Devices for a complete billing cycle to prevent billing.\nBecause Deactivation may involve large amounts of data, this API works in conjunction with theTask Status API: responses to successful Deactivation requests contain a Task Job ID that can be used to monitor the progress of the Deactivation task. Although only one task can run per Application, Senet recommends ensuring previous operations are complete prior to initiating a new Device Management job.\nhttps://api.senetco.io/rest/integration/device/deactivate\n\nPOST\n\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\"},\n { \n \"devEui\":\"123000000000ABC1\"}\n ]}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\"},\n { \n \"devEui\":\"123000000000ABC1\"}\n ]}\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\"},{\"devEui\":\"0A00000012000002\"}]}'\"https://api.senetco.io/rest/integration/device/deactivate?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\"},{\"devEui\":\"0A00000012000002\"}]}'\"https://api.senetco.io/rest/integration/device/deactivate?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\nDevice Update API\nUpdate fields of Devices that have joined on the managed Application. The Devices' latitude, longitude, tags, metadata, devType, devClass, fwVer, appKey and nwkKey fields can be edited. Tags in the update can append, replace or delete existing tags based on the selected operation. The tags can be specified for individual Devices in the JSON data or for the full set of Devices in the request by using the tags parameter. The latitude and longitude values in the JSON will always replace the existing Device data.\nOnly one task per Application is allowed to run at the same time. The response of a successful request is a URL to GET the status of the update task. SeeTask Status APIfor more information.\nhttps://api.senetco.io/rest/integration/device/update\n\nPOST\n\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\n \"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\n \"lat\":43.0775992,\n \"lng\":-70.7596765,\n \"tags\":\"tag1,tag2\",\n \"devType\":\"WATER_SENSOR\",\n \"devClass\":\"CLASS_B\",\n \"fwVer\" :\"1.0.0\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2\",\n \"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2\", \n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\",\n \"devClass\":\"CLASS_C\",\n \"fwVer\" :\"1.0.0\"}\n ]}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\n \"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\n \"lat\":43.0775992,\n \"lng\":-70.7596765,\n \"tags\":\"tag1,tag2\",\n \"devType\":\"WATER_SENSOR\",\n \"devClass\":\"CLASS_B\",\n \"fwVer\" :\"1.0.0\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2\",\n \"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2\", \n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\",\n \"devClass\":\"CLASS_C\",\n \"fwVer\" :\"1.0.0\"}\n ]}\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"123000000000ABC0\",\"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\"lat\":43.0775992,\"lng\":-70.7596765,\"tags\":\"tag1,tag2\",\"devType\":\"WATER_SENSOR\",\"devClass\":\"CLASS_B\",\"fwVer\":\"1.0.0\"},{\"devEui\":\"123000000000ABC1\",\"lat\":40.7484445,\"lng\":-73.9878584,\"tags\":\"tag1\",\"devType\":\"WATER_SENSOR\",\"devClass\":\"CLASS_C\",\"fwVer\":\"1.0.0\"}]}' -XPOST\"https://api.senetco.io/rest/integration/device/update?appEui=AAAAAAAAAAAAAA01&tagsOperation=APPEND\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"123000000000ABC0\",\"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\"lat\":43.0775992,\"lng\":-70.7596765,\"tags\":\"tag1,tag2\",\"devType\":\"WATER_SENSOR\",\"devClass\":\"CLASS_B\",\"fwVer\":\"1.0.0\"},{\"devEui\":\"123000000000ABC1\",\"lat\":40.7484445,\"lng\":-73.9878584,\"tags\":\"tag1\",\"devType\":\"WATER_SENSOR\",\"devClass\":\"CLASS_C\",\"fwVer\":\"1.0.0\"}]}' -XPOST\"https://api.senetco.io/rest/integration/device/update?appEui=AAAAAAAAAAAAAA01&tagsOperation=APPEND\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevUpdateJobReq:AAAAAAAAAAAAAA01\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevUpdateJobReq:AAAAAAAAAAAAAA01\"}\nDevice Export API\nExport Device data from the managed Application. The data returned from the API is formatted for a CSV file.\nhttps://api.senetco.io/rest/integration/device/csvExport\n\nGET\n\nThe following Device fields can be used with the 'fields' parameter:\ndevEui,contract,tags,metadata,state,registrationDate,activationDate,deactivationDate,lastHeardFrom,lastJoinTime,\nfirstJoinTime,yestBstns,yestPsr,yestAvgRssi,yestAvgSnr,lat,lng,profId,devType,devAddr,estLat,estLng,txPeriod,\ntxPower,curDr,adrChg,fwVer,serviceMetrics,metricA,metricB,metricC,joinEui\ndevEui,contract,tags,metadata,state,registrationDate,activationDate,deactivationDate,lastHeardFrom,lastJoinTime,\nfirstJoinTime,yestBstns,yestPsr,yestAvgRssi,yestAvgSnr,lat,lng,profId,devType,devAddr,estLat,estLng,txPeriod,\ntxPower,curDr,adrChg,fwVer,serviceMetrics,metricA,metricB,metricC,joinEui\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\"> device_export.csv\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\"> device_export.csv\nDev EUI,Contract,Tags,State,Registration Date,Activation Date,Deactivation Date,Last Heard From\n123000000000ABC0,99,,ACTIVATED,03/31/2017 11:37:30 PM UTC,03/31/2017 11:37:30 PM UTC,,04/03/2018 01:54:02 PM UTC\n123000000000ABC1,99,,ACTIVATED,03/31/2017 11:25:49 PM UTC,03/31/2017 11:25:49 PM UTC,,04/03/2018 00:27:38 PM UTC\n123000000000ABC2,99,,ACTIVATED,03/31/2017 11:04:48 PM UTC,03/31/2017 11:04:48 PM UTC,,09/25/2019 09:38:10 AM UTC\nDev EUI,Contract,Tags,State,Registration Date,Activation Date,Deactivation Date,Last Heard From\n123000000000ABC0,99,,ACTIVATED,03/31/2017 11:37:30 PM UTC,03/31/2017 11:37:30 PM UTC,,04/03/2018 01:54:02 PM UTC\n123000000000ABC1,99,,ACTIVATED,03/31/2017 11:25:49 PM UTC,03/31/2017 11:25:49 PM UTC,,04/03/2018 00:27:38 PM UTC\n123000000000ABC2,99,,ACTIVATED,03/31/2017 11:04:48 PM UTC,03/31/2017 11:04:48 PM UTC,,09/25/2019 09:38:10 AM UTC\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/csvExport?appEui=AAAAAAAAAAAAAA01&contractId=2&fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom,serviceMetrics\"> service_metric_data.csv\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/csvExport?appEui=AAAAAAAAAAAAAA01&contractId=2&fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom,serviceMetrics\"> service_metric_data.csv\nDev EUI,Contract,Tags,State,Registration Date,Activation Date,Deactivation Date,Last Heard From,Metric A,Metric B,Metric C\n123000000000ABC0,2,\"Test,tag1,tag22\",ACTIVATED,03/31/2017 11:37:30 PM UTC,03/31/2017 11:37:30 PM UTC,09/03/2019 09:04:07 PM UTC,07/07/2020 02:39:46 PM UTC,80,100,100\nDev EUI,Contract,Tags,State,Registration Date,Activation Date,Deactivation Date,Last Heard From,Metric A,Metric B,Metric C\n123000000000ABC0,2,\"Test,tag1,tag22\",ACTIVATED,03/31/2017 11:37:30 PM UTC,03/31/2017 11:37:30 PM UTC,09/03/2019 09:04:07 PM UTC,07/07/2020 02:39:46 PM UTC,80,100,100\nDevice Transfer API\nDevices may be transferred between Accounts, specifically between Applications. Transfer between Applications belonging to the same Account is also supported.\nThe response to a successful Device Transfer request contains a job status URL which in turn can be used to check the progress of the transfer task.Task Status APIfor more information.\nAll Transfers are constrained by or require the following:\nOnly one task per Application may run at a time.\nAn API key with sufficient access for the source and as well as the destination Application. These API keys must be included in the HTTP Header as fields: Authorization (source) and Authorization2 (destination).\nThe destination Application must support the Join Server(s) associated with the Devices being transferred.\nThe destination Account must have access to identified Contract and Device Profile to be used by the transferred Devices.\nhttps://api.senetco.io/rest/integration/device/transfer\n\nPOST\n\n{\n \"data\":[\n {\n \"devEui\":\"123000000000ABC0\"},\n {\n \"devEui\":\"123000000000ABC1\"}\n ]}\n{\n \"data\":[\n {\n \"devEui\":\"123000000000ABC0\"},\n {\n \"devEui\":\"123000000000ABC1\"}\n ]}\ncurl -H\"authorization: <CUR_APP_API_KEY>\"-H\"authorization2: <NEW_APP_API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\"},{\"devEui\":\"0A00000012000002\"}]}' -XPOST\"https://api.senetco.io/rest/integration/device/transfer?fromAppEui=A1A1A1A1A1A1A1A1&toAppEui=A2A2A2A2A2A2A2A2&contractId=123456\"\ncurl -H\"authorization: <CUR_APP_API_KEY>\"-H\"authorization2: <NEW_APP_API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\"},{\"devEui\":\"0A00000012000002\"}]}' -XPOST\"https://api.senetco.io/rest/integration/device/transfer?fromAppEui=A1A1A1A1A1A1A1A1&toAppEui=A2A2A2A2A2A2A2A2&contractId=123456\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevTransferJobReq:A1A1A1A1A1A1A1A1-A2A2A2A2A2A2A2A2\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevTransferJobReq:A1A1A1A1A1A1A1A1-A2A2A2A2A2A2A2A2\"}\nTask Status API\nGet the status of an ongoing Device Registration, Activation or Deactivation task. The Task Status API is used to confirm the preceding operation completes prior to initiating a subsequent request. The status is available for 15 minutes after the task completes.\nhttps://api.senetco.io/rest/integration/device/status\n\nGET\n\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"\n{ \n \"state\":\"DONE_SUC\",\n \"result\":{ \n \"status\":\"Device activation on App EUI: AAAAAAAAAAAAAA01 completed. Activated: 0 Updated: 0 Not Changed: 0 Errors: 1\",\n \"msgs\":[\"DevEUI: 1230000000000ABC has not been registered. The Device cannot be Activated on JoinEUI: AAAAAAAAAAAAAA01.\"],\n \"stats\":{\n \"activated\":0,\n \"updated\":0,\n \"notChanged\":0,\n \"errors\":1}},\n \"pctDone\":100}\n{ \n \"state\":\"DONE_SUC\",\n \"result\":{ \n \"status\":\"Device activation on App EUI: AAAAAAAAAAAAAA01 completed. Activated: 0 Updated: 0 Not Changed: 0 Errors: 1\",\n \"msgs\":[\"DevEUI: 1230000000000ABC has not been registered. The Device cannot be Activated on JoinEUI: AAAAAAAAAAAAAA01.\"],\n \"stats\":{\n \"activated\":0,\n \"updated\":0,\n \"notChanged\":0,\n \"errors\":1}},\n \"pctDone\":100}\n200The task specified was successfully found. The latest status is returned.\n400The reqId parameter is missing or invalid.\n403The API key is not authorized to get the status of the task.\n404No task could be found with the requested reqId.\nCurrent status of the task expressed as a percentage (0 to 100).\nCurrent state of the task.\nSummary of the task after completion.\nMessages describing any errors that occurred while running the task.\nFUOTA API\nAllows users toinitiate-,cancel-, orcheck the status of a FUOTA tasktargeting a set of Devices associated to the same Application. Each of these actions has a distinct resource URL with corresponding parameters, detailed below.\nFUOTA Task Initiation\nhttps://api.senetco.io/rest/integration/mcastTransfer\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST-F\"file=@patch-to_new.bin\"\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=AAAAAAAAAAAAAA01&devEuis=123000000000ABC0,123000000000ABC1&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST-F\"file=@patch-to_new.bin\"\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=AAAAAAAAAAAAAA01&devEuis=123000000000ABC0,123000000000ABC1&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\"\n{ \n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"responseMsg\":\"MCastXferJobReq job starting in: 00:01:59\",\n \"statusCode\":200}\n{ \n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"responseMsg\":\"MCastXferJobReq job starting in: 00:01:59\",\n \"statusCode\":200}\n\nFUOTA Task Cancellation\nhttps://api.senetco.io/rest/integration/mcastCancel\n\nPOST\n\n*Conditionally required. Either a Job IDORa combination of an Application EUI and a list of Device EUIs or tags is required.\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcastCancel?jobId=MCastXferJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcastCancel?jobId=MCastXferJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcastCancel?appEui=AAAAAAAAAAAAAA01&devEuis=123000000000ABC0,123000000000ABC1\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcastCancel?appEui=AAAAAAAAAAAAAA01&devEuis=123000000000ABC0,123000000000ABC1\"\n{ \n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"responseMsg\":\"MCastXferJobReq job cancelled.\",\n \"statusCode\":200}\n{ \n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"responseMsg\":\"MCastXferJobReq job cancelled.\",\n \"statusCode\":200}\n\nFUOTA Task Status\nhttps://api.senetco.io/rest/integration/mcastStatus\n\nGET\n\n*Conditionally required. Either a Job IDORan Application EUI is required to get the status for a pending or running FUOTA job.\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcastStatus?jobId=MCastXferJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcastStatus?jobId=MCastXferJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcastStatus?appEui=AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcastStatus?appEui=AAAAAAAAAAAAAA01\"\n{\n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"serverId\":\"string\",\n \"state\":\"Running\",\n \"startTime\":0,\n \"endTime\":0,\n \"removeTime\":0,\n \"pctDone\":0,\n \"username\":\"string\",\n \"result\":\"string\",\n \"acctId\":0,\n \"operId\":0,\n \"jobLauncherClsNm\":\"string\"}\n{\n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"serverId\":\"string\",\n \"state\":\"Running\",\n \"startTime\":0,\n \"endTime\":0,\n \"removeTime\":0,\n \"pctDone\":0,\n \"username\":\"string\",\n \"result\":\"string\",\n \"acctId\":0,\n \"operId\":0,\n \"jobLauncherClsNm\":\"string\"}\nMulticast API\nAllows users tosetup-,modify-,check the status of-,send downlinks to-, andremovea Multicast Group targeting a set of Devices associated to the same Application. Each of these actions has a distinct resource URL with corresponding parameters, detailed below.\nMulticast Group Setup\nhttps://api.senetco.io/rest/integration/mcast/setup\n\nPOST\n\n*Conditionally required. Either a list of Device EUIsORa list of Device tags is required.\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=C&txChnl=7&txDr=13&type=D2D\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=C&txChnl=7&txDr=13&type=D2D\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initializing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initializing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initializing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initializing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n\nAdd Devices To Existing Multicast Group\nhttps://api.senetco.io/rest/integration/mcast/addDevices\n\nPOST\n\n*Conditionally required. Either a list of Device EUIsORa list of Device tags is required.\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE02\",\n \"groupId\":1,\n \"state\":\"Initializing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE03\",\n \"groupId\":2,\n \"state\":\"Initializing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE02\",\n \"groupId\":1,\n \"state\":\"Initializing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE03\",\n \"groupId\":2,\n \"state\":\"Initializing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n\nRemove Devices From Existing Multicast Group\nhttps://api.senetco.io/rest/integration/mcast/removeDevices\n\nPOST\n\n*Conditionally required. Either a list of Device EUIsORa list of Device tags is required.\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE02\",\n \"groupId\":1,\n \"state\":\"Closing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE03\",\n \"groupId\":2,\n \"state\":\"Closing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE02\",\n \"groupId\":1,\n \"state\":\"Closing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE03\",\n \"groupId\":2,\n \"state\":\"Closing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n\nMulticast Group Status\nhttps://api.senetco.io/rest/integration/mcast/status\n\nGET\n\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\"\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Failed\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Failed\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n\nSend Downlink To Multicast Group\nhttps://api.senetco.io/rest/integration/mcast/sendmsg\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n\nMulticast Group Removal\nhttps://api.senetco.io/rest/integration/mcast/delete\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Closing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Closing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Closing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Closing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
649 },
650 {
651 "platform": "Senet",
652 "type": "docs",
653 "source": "https://docs.senetco.io/dev/stream/#notification-targets",
654 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nAPI Reference\nOverview\nNotification Targets\nSupported Notification Targets\nUplink API\nDownlink API\nDownlink API - Multicast\nDownlink API - Clear Downlinks\nAPI Reference\nSenet offers a variety of methods to stream device messages transmitted over the Senet Network.\nOverview\nUplink Messages\nDevices transmit anuplink messageto one or more gateways that relays the message to the network server. The network server forwards the message to an IoT platform.\n\nDownlink Messages\nIoT platforms make calls to the network server. The network server sends eachdownlink messageto a single gateway that transmits the message to a single device.\n\nNotification Targets\nData streaming is setup by creating aNotification Targetfor a devices. TheNotification Targetconfigures the network server to stream device uplinks to a user specified destination or 3rd party IoT platform. In other words, uplink messages are forwarded as they are received by the Senet Network.\nConfigure a Notification Target:\nOpen theEdit Devicewindow.Table View: Select a row in the device table. Click on the edit button.Tile View: Click on the menu button. Click on the edit button.Device Details: Click on the edit button.\nOpen theEdit Devicewindow.\nTable View: Select a row in the device table. Click on the edit button.\nTable View: Select a row in the device table. Click on the edit button.\nTile View: Click on the menu button. Click on the edit button.\nTile View: Click on the menu button. Click on the edit button.\nDevice Details: Click on the edit button.\nDevice Details: Click on the edit button.\n\nClick on the NOTIFICATION TARGET tab.\nClick on the NOTIFICATION TARGET tab.\nIn theForward Todropdown menu, choose a Notification Target type to display the required fields and options.\nIn theForward Todropdown menu, choose a Notification Target type to display the required fields and options.\nComplete the required fields and click Save.\nComplete the required fields and click Save.\nNote\nA firewall rule may need to be added to allow incoming uplink messages from the Senet Network.\nSenet Source IP Addresses: 34.197.99.138 and 52.88.64.191\nSupported Notification Targets\nThe Senet Network supports a variety of options to forward messages as they are received by the network. Options may be to forward messages to a private socket listener or a public subscription based analytics solution. By Default, only the packet with the best Signal to Noise Ratio (SNR) will be forwarded. To receive packets received by multiple gateways (Duplicate Packets) enable “Include Duplicate Uplinks” when setting up the notification target.\nFor a list of the supported notifications targets and configurations use the drop-down API menu above.\nConsecutive Errors\nNotification Targets that produce 10 consecutive errors when forwarding data will be disabled by the network server. This is to prevent excessive load on the target and on the network server. A short outage in network connectivity should not trigger the 10 consecutive error limit on most devices. However, if your device has a very short transmit interval, it may be possible to reach the 10 consecutive error limit in a very short period of time. If your Notification Target is disabled by the network server, review the Last Error message field in the device details. This error message will help you understand why the notifications are failing. If you believe the errors were caused by an interruption in service that has now been corrected, you can re-enable the Notification Target to restore message forwarding. If the error condition persists, the Notification Target will again be disabled when the error limit is reached.\nUplink API\nThe Senet Network receives payload data from devices via one or more gateways that receive the transmission. In addition to streaming the payload data (pdu), network information is also included. The data is formatted usingJSONand contains the following default fields. Optional RF fields can also be added by enabling \"Include RF Data\" in the notification target.\nThe Senet Network supports the standardJSONobject model where each object contains one-to-many key/values pairs. TheJSONobject is in the following format:\nNote\nSenet may add additional fields during future Portal updates. Please ensure that your Application will ignore any unknown fields and continue to parse the notification data.\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\nFields\n* Requires contractual agreement in Production\nExample with Payload Fields:\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\n\nExample with RF Fields:\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":4,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"snr\":10,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":4,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"snr\":10,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\n\nDownlink API\nSenet provides a simple API for sending downlinks to devices on the Senet Network using HTTP POST. The Downlink API can be leveraged by a Notifier endpoint where in response to receiving uplinks, downlinks are automatically submitted to the downlink queue. All API requests require an authorization key passed either as a parameter or in an authorization header of a Curl command. Senet API keys are 44-character alpha-numeric strings with a prefix of either “AK2:” or “AK3:”.\nImplementing the Downlink API\nThe Senet Downlink API is available to all Portal users. It is implemented as a standard parameterized URL.\nClick on the usernamein the top-right corner.\nClick on the usernamein the top-right corner.\nFrom the dropdown menu, selectEdit Account Info.\nFrom the dropdown menu, selectEdit Account Info.\n\nClick on the Generate API Key buttonon the right side underDeveloper API Keyto generate and display a new API Key.\nClick on the Generate API Key buttonon the right side underDeveloper API Keyto generate and display a new API Key.\n\nCopy the key, storing it securely and safely: this key uniquely identifies the user's account to the Portal. All incoming API calls must be validated with this key in conjunction with registered devices and gateways.\nCopy the key, storing it securely and safely: this key uniquely identifies the user's account to the Portal. All incoming API calls must be validated with this key in conjunction with registered devices and gateways.\nUsing the API Key and parameterized URL described below, downlinks can now be sent to the user's devices with the Downlink API. In the examples below, the \"<API_KEY>\" value should be replaced with the generated key.\nUsing the API Key and parameterized URL described below, downlinks can now be sent to the user's devices with the Downlink API. In the examples below, the \"<API_KEY>\" value should be replaced with the generated key.\nResource URL\nhttps://portal.senetco.io/rest/current/device/sendmsg\nHTTP Method\nPOST\nParameters\nResponse\nCurl Example:\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmsg?eui=FFFFFFFFFFFFFFFF&pdu=0102&confirmed=true&port=88&timeoutMinutes=2\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmsg?eui=FFFFFFFFFFFFFFFF&pdu=0102&confirmed=true&port=88&timeoutMinutes=2\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Multicast\nSend multicast downlink messages to a multicast session allowing a user specified list of gateways to transmit on.\nResource URL\nhttps://portal.senetco.io/rest/current/device/sendmcastmsg\nHTTP Method\nPOST\nParameters\nResponse\nCurl Example\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Clear Downlinks\nClears queued downlink messages. If a specific message ID is supplied, only that downlink will be cleared, otherwise all queued messages are cleared.\nResource URL\nhttps://portal.senetco.io/rest/current/device/clearmsgs\nHTTP Method\nPOST\nParameters\nResponse\nCurl Example\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://portal.senetco.io/rest/current/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\n{\"clearedIds\":[00001]}\n}\n{\"clearedIds\":[00001]}\n}\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
655 },
656 {
657 "platform": "Senet",
658 "type": "docs",
659 "source": "https://docs.senetco.io/rp/#ran-provider-documentation",
660 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nRAN Provider Documentation\nGetting Started\nUser Interface\nRAN Provider Documentation\nRegister and manage LoRaWAN Base Stations on the Senet Network. RAN (Radio Access Network) Provider Base Stations generate revenue based on the number of qualified messages that used the Radio Access Network.\nGetting Started\nLearn how toRegister a Base Station.\nLearn how toRegister a Base Station.\nLearn how toInstall the Senet Packet Forwarder.\nLearn how toInstall the Senet Packet Forwarder.\nLearn how toCustomize and Navigate the Dashboard.\nLearn how toCustomize and Navigate the Dashboard.\nUser Interface\nBase Stations\nThe main landing page will allow a RAN provider to provision and deploy their own RAN provided Base Stations. When a new Base Station is registered to the network the RAN provider can modify Base Station's channel plan, view Base Station details, RF statistics, performance, and much more.\nBase Station Details Summary\nIn Details Summary view a RAN provider is able to view number of heard devices, transactions, Ethernet/Cell stats, network round trip time, and CPU/Memory statistics over the course of a given time period. The RAN provider is also able to view uptime and other critical statistics to monitor the Base Station's health over time.\nBase Station Events\nThe events view helps a RAN provider view the traffic and device's that are flowing through their Base Station. These events show a devices EUI, RF statistics and other important information.\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nBase Station RF Statistics\nIf you are looking for RF statistics, this view will show you the Base Station receive and transmit statistics over time with a heat map for all channels and frequencies.\nBase Station Stats\nThe Statistics page shows how a Base Station is performing over a daily, monthly or lifetime with view in to uplinks, downlinks (both foreign and local), average transaction and average device counts.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
661 },
662 {
663 "platform": "Senet",
664 "type": "docs",
665 "source": "https://docs.senetco.io/ap/#dashboard",
666 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
667 },
668 {
669 "platform": "Senet",
670 "type": "docs",
671 "source": "https://docs.senetco.io/dev/#gateway-details",
672 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nDeveloper Documentation\nDashboard\nDevice Details\nEdit Device\nGateway Details\nEdit Gateway\nDelete Gateway\nDeveloper Documentation\nIoT development for the Senet Network\n\nJoin the Community\nUse theSenet Communityto ask question, read articles, talk to Senet employees and other Portal users.\nDashboard\nThe Dashboard is the main view of the Portal. Users can connect their Devices and Gateways to the Senet Network through a simple registration process. The Dashboard displays high level statistics and RF data to help users monitor their equipment.\nCustomize the Dashboard\nClick on the gearin the top-right corner.\nOptions are displayed to choose a view and toggle Dashboard features.\n\nNote\nWhen the Tile View is selected, theTile Sortingoptions are displayed at the bottom of the Dashboard Settings. When the Table View is selected, rows can be sorted by clicking on the column headers.\nTile View\nChoose theTile Viewin theDashboard Settingsto display each Devices or Gateways in a tile. The tiles show network and configuration data along with a graph to display transaction and RF statistics.\n\nClick on the plus iconabove the tiles to open the registration window shown below.\n\nClick on the Device image to register a Device or the Gateway image to register a Gateway. See theDevice Registrationdocumentation orGateway Registrationdocumentation for step-by-step instructions.\nClick on the menu buttonin the top right corner of the tile. Click on the delete buttonto remove the Device or Gateway. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\n\nTable View\nChoose theTable Viewin theDashboard Settingsto display the Devices and Gateways in separate tables.\n\nClick on the register buttonabove the Device or Gateway table to open the respective registration window. See theDevice Registrationdocumentation or theGateway Registrationdocumentation for step-by-step instructions.\nClick on a row to select a Device or Gateway. Click on the delete buttonto remove the selected item. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\nThere are two options provided for deleting a Device:\nDelete the Device from the Network.\nDelete the Device from the Account only.\nDeleting the Device from the Network removes the Device from the NMS completely. It will not be able to communicate on the Senet Network following the deletion.\nDeleting the Device from the Account leaves the Device in an active state on the Network, but removes it from display in the Developer view. Deleting a Device from an Account also removes any Device specific Notification Targets. Data from the Device will not be forwarded until it is associated with a new Account and Notification Target.\n\nNetwork Delete\n\nAccount Delete\n\nDevice Details\nClick on a Device EUI or Device image in the dashboard to open theDevice Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above allows users to edit their Device, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open theEdit Devicewindow\nSend Downlink\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\nEdit Device\nEdit the Device description, type and notes in the DETAILS tab.\n\nEdit the Device latitude and longitude in the LOCATION tab.\n\nEdit theNotification Targetin the NOTIFICATION TARGET tab.\n\nSelect LoRaWAN Device settings can be overriden in the DEVICE PROFILE tab. These configure the behavior of the Device on the network and do not normally need to be changed. Accordingly, this tab is not visible by default. Check the Device Profile checkbox on the DETAILS tab to display this tab.\n\nThe following table contains the list of LoRaWAN settings that can be set in this tab:\nGateway Details\nClick on a Gateway EUI or Gateway image in the Dashboard to open theGateway Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above displays information and statistics about the Gateway. Click on thebutton to minimize.\nEdit Gateway\nEdit the Gateway installation information.\n\nDelete Gateway\nClick thebutton in the table view or thebutton in the tile view to remove the Gateway. A dialog is shown to confirm the delete request. The dialog includes a checkbox to indicate that the Gateway should also be permanently removed from the network. If the box is not checked, only the user's association to the Gateway is removed.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
673 },
674 {
675 "platform": "Senet",
676 "type": "docs",
677 "source": "https://docs.senetco.io/ap/#system-events",
678 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nApplication Provider Documentation\nDashboard\nDevices\nApplication Events\nSystem Events\nDevice Management Events\nDevices with Notifiers\nDevice Management\nDevice Profiles\nDevice Contracts\nMulticast Groups\nApplication Provider Documentation\nApplication Providers manage and monitor the health of one or more applications on the network. The Application Provider Portal provides application management features and visibility into the state of end Devices.\n\nApplication Views\nClick on the header buttons to change the view.\nDashboard:Message and notification statistics\nEvents:View System Events, Application LoRa Events, and Device Management Events\nDevices:Devices that have joined the network\nDevices with Notifiers:Devices with custom notification targets\nAlerts:Application notifier alerts\nDevice Management:Registered, Activated and deactivated Devices\nApplication Usage:Monthly and daily application statistics\nDevice Profiles and Contracts:Available Device profiles and contracts\nMulticast Groups:Current and expired Multicast Groups for the Application\nDetails Panel\nThe Details Panel displays application metadata. Click on thebutton to minimize.\n\nDashboard\nThe Dashboard view shows message and notification statistics for the managed application. Values are updated every 15 minutes. The selected time frame for the statistics can be set to 1, 7 or 31 days.\n\nFor Applications with more than one contract, the charts for Uplinks, Downlinks, Join Success and Join Errors support aggregation of the statistics by selected Contracts. The type of chart changes from line to column when Contracts are selected. This provides insight into the relative contribution of each Contract to the statistics.\nThe remaining charts are based on global statistics that cannot be scoped to specific Contracts. These do not support filtering by Contract.\n\nDevices\nThe Devices view displays transaction data for Devices that have joined the Senet Network on the managed application.\n\nUse the Search bar to find Devices matching the selected field and search term.\n\nNote\nThe search is only executed against the selected field to optimize performance. A search for a Device Address with the Dev EUI field selected would not return results unless the Device Address also happened to match a Device EUI.\nIf a search for a full Device EUI fails, an option is provided to further search the Registered Devices. This is presented as a clickable link in the body of the Devices table.\n\nIf that search succeeds, information about the found Registered Device is presented in a popup.\n\nDevices can also be filtered to show the Devices for one or more selected Contracts. Here, the Devices for the GeneticsLab Contract are shown:\n\nChecking the Show Map checkbox shows the Devices on a map if either the actual or estimated locations are known.\n\nSelect Filter to Selected Devices to limit the Devices view to a select group of Devices. This filtered view can be shown with or without the Map.\n\n\nNote:The RSSI and SNR columns include color-coded icons to reflect the strength and quality of uplinks from each Device. The following table provides the meaning of each color along with the corresponding value-range. When hovering over an icon, this text will be displayed as a tooltip.\nDevice Table Buttons\nUpdate Devices:Upload a CSV file to update Device fields. SeeDevice Updatefor more information.\nDevice Configuration:Edit Information and Settings or Tags for the selected Devices\nRefresh:Manually request the latest data\nSettings:Control the column visibility\nExport:Export the table to a Excel file\nFirmware Upgrade:Update the firmware for the selected Device\nDiagnostic Mode:Put selected Devices in Diagnostic Mode\nDevice Configuration\nThe following Device information can be set in the Information and Settings dialog: Device Type, Device Profile, Device Class, Firmware Version, Latitude and Longitude and Metadata.\n\nAdding and Removing Tags\nTags are used for grouping and filtering Devices. One or more tags can be added to selected Devices in the table. To remove multiple tags at the same time, insert the tag names into the dialog separated with a comma, ex. \"Tag1,Tag2,Tag3\".\n\nThen, entering a tag in the search box of the table will find Devices matching that tag.\n\nExporting Device Service Metrics Data\nService Metrics data is calculated based on the terms of an associated Contract. The data can be exported from the Application Details Devices view.\nClick on the Export button in the view to display a menu showing available export options.\nClick on the Export button in the view to display a menu showing available export options.\n\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\nClick on Export Service Metrics Data to show a dialog presenting a list of Contracts associated with the Application.\n\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nSelect the desired Contract and Service Period and click the Export button to begin the export.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nThe data is exported to an Excel formatted file that appears in the lower left corner of the browser. The columns Metric A, Metric B and Metric C in the exported file, show the percentage of days within a 31 day period that a Device sent an uplink within the associated time window.\nDiagnostic Mode\nEnabling Diagnostic Mode for a Device adds it to the Developer Dashboard and enables notifiers. Devices with Diagnostic Mode enabled will appear in the Devices table with anicon next to their EUI. Clicking on an EUI will open theDevice Detailsview. Diagnostic Mode can be enabled on a limited number of Devices. Please contactsupport@senetco.comto increase the limit for an account.\nDetails Panel\nThe Details Panel on the left side of the image above allows users to create or edit a custom Notification Target, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open the Edit Device window (see below). This button is only visible if Diagnostic mode is enabled for the Device.\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\n\nCreate a custom Notification Target or edit the previously configured Notification Target. Devices with custom Notification Targets will appear in the Devices with Notifiers view. See theDeveloper Streamingdocumentation for more details.\n\nApplication Events\nThe Application Events view provides a consolidated view of the LoRa events associated with the Application. Like other event views, the Application Events may be filtered by date and time to focus events that occurred at a specific point in time. Events may also be traversed historically using the \"More\" button. Events that are received late are specifically identified with light italicized text on the Time column.\n\nSystem Events\nSystem events are system level events for the Application and Join Servers. This table allows you to navigate these events to help troubleshoot issues with the Application.\n\nClicking on a system event allows you to view the details of the event.\n\nDevice Management Events\nDevice management are specific audit events generated by Device management changes. They contain the details of the changes including; The time the changes took place, which Devices were changed (Ids), who completed the changes (Username), and how the changes were performed (Authentication). Events are generated in batches of 500 devices so it is not uncommon to see several events for a single change.\n\nYou can view the details of an event by clicking on a row in the table which launches a dialog.\n\nDevices with Notifiers\nStreaming data for Devices with custom notification targets are displayed in the Device with Notifiers view.\n\nUse the Search bar to find Devices by their EUI.\n\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nExport:Export the table to a CSV file\nEdit Device Notifier:Edit the selected Device's notification target.\nNote\nDevices must be in diagnostic mode in order to edit their notifier. If a Device is not in diagnostic mode, it can be enabled using the Toggle Diagnostic Mode button.\nToggle Diagnostic Mode:Toggles the diagnostic mode state of a Device within the notifiers table. Rows marked with the same icon as the button are already in diagnostic mode.\nNote\nDisabling diagnostic mode removes the notifier. Doing so from this table will remove the Device from the table.\nDevice Management\nThe Device Management view shows Device onboarding data. See theDevice Managementpage under Devices for additional details about available actions.\n\nUse the Search bar to find Devices by their EUI.\n\nUpload:Upload a CSV file to Register, Activate or Deactivate Devices\nUpdate Application Keys:Upload a CSV file to update the Application keys for Devices. This performs the same action asDevice Update\nActivate/Deactivate:Activate or Deactivate the selected Devices\nRequest Token:Request a Device registration token\nDevice Transfer:Provides a menu with options to transfer Devices between Join Servers or Accounts.\nAdd Device for Unknown/Unregistered Join Server:Register a single Device with an unknown or unregistered Join Server.\nRefresh:Manually request for the latest data\nSettings:Control the column visibility\nDevice Profiles\nA Device Profile can be leveraged to serve multiple purposes, it allows for the configuration of certain Device attributes that aide the network in properly managing the Device behavior. For example, the profile allows for the definition of an expected transmit interval. This transmit interval helps to identify how well a Device is performing against its daily expected communication profile.\nThe Device Profile also allows for the configuration of certain options that can be useful during testing and QA efforts. For example, the minimum/maximum Data Rate or range that a Device can operate at can be defined through the profile. A Device can be forced to operate at a Data Rate that is either higher or lower than that which the network would normally decide. Additional attributes that can be controlled include, but are not limited to; Tx power, Channel Plan, operational LoRa Version of the Device. \nSeeDevice Profilesunder the Devices menu for more details on Device Profile management.\n\nDevice Contracts\nThe Device Contracts view shows all Contracts created for the Application that can be used to group Devices for billing and usage data collection.\nSee theDevice Contractssection under Application Usage and Accounting for more details.\n\nMulticast Groups\nThis view displays all Multicast Groups for the selected Application. Multicast Groups fall into three categories: FUOTA, Application and Device To Device. The FUOTA groups are initiated by setting up a FUOTA transfer through the UI or through the FUOTA API. Application and Device to Device Multicast Groups can be initiated through theMulticast API.\n\nColumns\nTable Filters\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
679 },
680 {
681 "platform": "Senet",
682 "type": "docs",
683 "source": "https://docs.senetco.io/ap/extCoverageServices/",
684 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nSenet Extended Coverage\nHelium Network\nSenet Extended Coverage\nSenet Extended Coverage is achieved by interconnecting LoRaWAN networks through roaming agreements with network operators. Extended Coverage allows IoT devices to seamlessly connect within or move between network operator partner coverage areas.\nHelium Network\nSenet customers with LoRaWAN Virtual Network (LVN) access can use the network provided by Helium to connect to Senet at no additional cost. The Helium Network extends Senet Public LVN coverage across the globe.\nSenet provides tools that enable our customers to locate available Helium coverage in areas of interest and provides an overlay of Helium coverage within theMapssection of the Senet cloud deployed network operating system.\nHelium Join Server Requirements\nTo join the Senet network through Helium Hotspots, devices must be provisioned with a Join Server EUIused exclusivelyon the Senet network. As shown in the table below, devices programmed with a Senet Join Server EUI and configured on a Senet Public LVN Application (NetID9) may join on either the Senet LVN network or through Helium. Devices programmed with a Join Server EUI derived from an OUI block owned by the application owner or a third-party vendor are also allowed to join on either the Senet LVN network or through Helium, provided the Join Server is used exclusively for devices on the Senet platform. Senet requires a written statement detailing the exclusive use of the Senet Designated Join Server EUI on the Senet platform. Senet Designated Join Server EUIs are approved on a case-by-case basis. Contact support for approval of Senet Designated Join Server EUIs.\n\nNOTE:Devices programmed with a Join Server EUI that is not exclusive to Senet will not be permitted to join through Helium.\nContact Senet sales or support for details on how to acquire a unique Join Server EUI.\nCommunicating Through a Helium Hotspot\nTo communicate through a Helium Hotspot, devices must beRegistered and Activateddirectly with Senet under an LVN accessible (public) Senet Application Provider account. After Activation, the device's join procedure can be initiated. Once initiated, devices programmed with a Senet allocated or Senet Designated Join Server EUI may join through either the Senet LVN or Helium. Devices programmed with a Join Server EUI that is not exclusive to Senet must join through a Senet LVN Base Station.\nOnce joined to the network, the devices can communicate through Senet LVN or Helium.\nHelium Regional Frequency Plan\nHelium offers standard channel plans that align with regulatory requirements around the world. A detailed catalog of each supported regional channel plan is availablehere.\nUS-based Helium Hotspots operate on sub-band 2 (channels 8-15 of US915 ISM Band).\nWhen using a combination of Helium and Senet public LVN, Senet recommends aligning customer 8-channel LVN connected Base Stations with the default Helium channel plan (sub-band 2).\n\nIt is strongly recommended that devices adhere to the LoRaWAN specification and initially attempt to join across all 64 channels with ADR enabled. Once Joined, devices will be commanded to operate and communicate across both Senet LVN Base Stations and Helium Hotspots on sub-band 2.\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
685 },
686 {
687 "platform": "Senet",
688 "type": "docs",
689 "source": "https://docs.senetco.io/dev",
690 "content": "Home\nGetting Started\nDevices\nGatewaysGateway SoftwareRegistrationSupported RegionsRelease Notes\nGateway Software\nRegistration\nSupported Regions\nRelease Notes\nAPI ReferenceAPI ReferenceAWS API GatewayDweetGeckoboardGinjerHTTP/HTTPSInitial StateLosantMicrosoft Azure IoT HubMQTTMurano by ExositemyDevices CayennePubNubQubitroScriptr;TagoIOTCP Socket ConnectionThingSpeakWolfram DatadropYodiwo\nAPI Reference\nAWS API Gateway\nDweet\nGeckoboard\nGinjer\nHTTP/HTTPS\nInitial State\nLosant\nMicrosoft Azure IoT Hub\nMQTT\nMurano by Exosite\nmyDevices Cayenne\nPubNub\nQubitro\nScriptr;\nTagoIO\nTCP Socket Connection\nThingSpeak\nWolfram Datadrop\nYodiwo\nSearch\nDeveloper Documentation\nDashboard\nDevice Details\nEdit Device\nGateway Details\nEdit Gateway\nDelete Gateway\nDeveloper Documentation\nIoT development for the Senet Network\n\nJoin the Community\nUse theSenet Communityto ask question, read articles, talk to Senet employees and other Portal users.\nDashboard\nThe Dashboard is the main view of the Portal. Users can connect their Devices and Gateways to the Senet Network through a simple registration process. The Dashboard displays high level statistics and RF data to help users monitor their equipment.\nCustomize the Dashboard\nClick on the gearin the top-right corner.\nOptions are displayed to choose a view and toggle Dashboard features.\n\nNote\nWhen the Tile View is selected, theTile Sortingoptions are displayed at the bottom of the Dashboard Settings. When the Table View is selected, rows can be sorted by clicking on the column headers.\nTile View\nChoose theTile Viewin theDashboard Settingsto display each Devices or Gateways in a tile. The tiles show network and configuration data along with a graph to display transaction and RF statistics.\n\nClick on the plus iconabove the tiles to open the registration window shown below.\n\nClick on the Device image to register a Device or the Gateway image to register a Gateway. See theDevice Registrationdocumentation orGateway Registrationdocumentation for step-by-step instructions.\nClick on the menu buttonin the top right corner of the tile. Click on the delete buttonto remove the Device or Gateway. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\n\nTable View\nChoose theTable Viewin theDashboard Settingsto display the Devices and Gateways in separate tables.\n\nClick on the register buttonabove the Device or Gateway table to open the respective registration window. See theDevice Registrationdocumentation or theGateway Registrationdocumentation for step-by-step instructions.\nClick on a row to select a Device or Gateway. Click on the delete buttonto remove the selected item. Click on the edit buttonto open theEdit DeviceorEdit Gatewaywindow.\nThere are two options provided for deleting a Device:\nDelete the Device from the Network.\nDelete the Device from the Account only.\nDeleting the Device from the Network removes the Device from the NMS completely. It will not be able to communicate on the Senet Network following the deletion.\nDeleting the Device from the Account leaves the Device in an active state on the Network, but removes it from display in the Developer view. Deleting a Device from an Account also removes any Device specific Notification Targets. Data from the Device will not be forwarded until it is associated with a new Account and Notification Target.\n\nNetwork Delete\n\nAccount Delete\n\nDevice Details\nClick on a Device EUI or Device image in the dashboard to open theDevice Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above allows users to edit their Device, send downlinks and view Device information and statistics. Click on thebutton to minimize.\nDetails:Display current information about the Device\nSend Downlink:Send downlink PDUs to the Device\nEdit Device:Open theEdit Devicewindow\nSend Downlink\nOn-demand application downlinks can be sent directly from the Device Details view. A message is sent by specifying the message PDU and the target port on the Device. Message confirmation is enabled by checking the corresponding checkbox.\n\nWhen operating as Class-B or Class-C, the Device's Details Send Downlink UI will display a Device Class selector.\nDownlink options include:\nClass-A: Queue the downlink until the next uplink receive windows are available\nClass-B: Do not queue; send the downlink to the elected base station for transmit on the available next ping slot\nClass-C: Do not queue; transmit immediately.\n\nEdit Device\nEdit the Device description, type and notes in the DETAILS tab.\n\nEdit the Device latitude and longitude in the LOCATION tab.\n\nEdit theNotification Targetin the NOTIFICATION TARGET tab.\n\nSelect LoRaWAN Device settings can be overriden in the DEVICE PROFILE tab. These configure the behavior of the Device on the network and do not normally need to be changed. Accordingly, this tab is not visible by default. Check the Device Profile checkbox on the DETAILS tab to display this tab.\n\nThe following table contains the list of LoRaWAN settings that can be set in this tab:\nGateway Details\nClick on a Gateway EUI or Gateway image in the Dashboard to open theGateway Detailsview.\n\nDetails Panel\nTheDetails Panelon the left side of the image above displays information and statistics about the Gateway. Click on thebutton to minimize.\nEdit Gateway\nEdit the Gateway installation information.\n\nDelete Gateway\nClick thebutton in the table view or thebutton in the tile view to remove the Gateway. A dialog is shown to confirm the delete request. The dialog includes a checkbox to indicate that the Gateway should also be permanently removed from the network. If the box is not checked, only the user's association to the Gateway is removed.\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Developer documentation. Enter your search terms below.\nNavigate to a different documentation page:Application Provider,RAN Provider"
691 },
692 {
693 "platform": "Senet",
694 "type": "docs",
695 "source": "https://docs.senetco.io/ap/appUsageApi/",
696 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nUsage API Reference\nDetails API\nContracts API\nUsage API Reference\nThe Usage REST APIs allow system administrators to retrieve usage data for each of their Applications and Applications they manage. An API key is required to authenticate with this API. API keys are created and managed in theAPI Keysview.\nResponse types vary from method to method.\nNote\nThe keys required for Usage API access and Onboarding API access are different, i.e. An Onboarding API key will not grant access to the Usage APIs and vice versa.\nDetails API\nReturns the details of all usage data for a given Application, month, and year.\nResource URL\nhttps://api.senetco.io/rest/integration/usage/details\nHTTP Method\nGET\nParameters\nResponse\nContent-Type: text/csv\nThis web service returns a file containing all the devices on the Application and their usage statistics.\nSeeApplication Details Filefor descriptions of the field data in the CSV file.\nCurl Example\ncurl -XGET\\'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization:<API_KEY_TO_USE>'\ncurl -XGET\\'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization:<API_KEY_TO_USE>'\nContracts API\nReturns the per contract usage data for a given Application, month, and year.\nResource URL\nhttps://api.senetco.io/rest/integration/usage/contracts\nHTTP Method\nGET\nParameters\nResponse\nContent-Type: text/csv\nThis WS returns a file containing all the contracts on the application and their usage statistics.\nSeeApplication Contracts Filefor descriptions of the field data in the CSV file.\nCurl Example\ncurl -XGET\\'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization:<API_KEY_TO_USE>'\ncurl -XGET\\'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization:<API_KEY_TO_USE>'\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
697 },
698 {
699 "platform": "Senet",
700 "type": "docs",
701 "source": "https://docs.senetco.io/rp/mapoverview/",
702 "content": "Home\nGetting Started\nBase StationsRegistrationBase Station ManagementBase Station DetailsBase Station SoftwareRelease NotesSupported Regions\nRegistration\nBase Station Management\nBase Station Details\nBase Station Software\nRelease Notes\nSupported Regions\nAPI Reference\nMapsOverviewNetwork StatusCoverage PointsPlanningCustom Layers\nOverview\nNetwork Status\nCoverage Points\nPlanning\nCustom Layers\nReports\nAlertsAlert ManagementCase Management\nAlert Management\nCase Management\nAdministrationUsersContractsContactsConfiguration HistoryAPI Key Management\nUsers\nContracts\nContacts\nConfiguration History\nAPI Key Management\nSearch\nMap Overview\nMap Features\nCommon Tasks\nFiltering Map Labels\nMap Overview\nA geographic view of the network to assist with both deployments and coverage assessments.\nThe default map displays the current network status of deployed Base Stations\n\nThe control toolbar in the top right of the map gives the current user the following options.\n- Reset zoom level.\n- Refresh map to get data at current location and zoom level.\n- Determine coverage at current or user specified location.\n- Display and manage planning maps.\n- Control pin layers\nMap Features\nNetwork Status\nNetwork Planning\nCommon Tasks\nCreating Planning Maps\nManaging Planning Maps\nBase Station Deployment Planning\nCoverage Analysis\nFiltering Map Labels\nRoad and point of interest features and labels are displayed by default on the Map. These can be disabled for a cleaner Map appearance by unselecting the Labels checkbox under the Map control.\n\n\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the RAN Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,Application Provider"
703 },
704 {
705 "platform": "Senet",
706 "type": "docs",
707 "source": "https://docs.senetco.io/ap/api/#multicast-api",
708 "content": "Home\nOverview\nApplication ManagementApplications ViewApplication StreamingApplication Usage & AccountingJoin Server ViewsMulticast Group Views\nApplications View\nApplication Streaming\nApplication Usage & Accounting\nJoin Server Views\nMulticast Group Views\nDevicesDevice ManagementDevice DetailsDevice Profiles\nDevice Management\nDevice Details\nDevice Profiles\nAPI ReferenceDevice API ReferenceNetwork Management API ReferenceUsage and Billing API Reference\nDevice API Reference\nNetwork Management API Reference\nUsage and Billing API Reference\nMapDevicesPlanningCustom LayersExtended Coverage\nDevices\nPlanning\nCustom Layers\nExtended Coverage\nAlerts\nAdministrationUsersAPI Key ManagementConfiguration History\nUsers\nAPI Key Management\nConfiguration History\nSearch\nAPI Reference\nUplink API\nDownlink API\nDownlink API - Multicast\nDownlink API - Clear Downlinks\nDevice Onboarding APIs\nDevice Registration API\nDevice Activation API\nDevice Deactivation API\nDevice Update API\nDevice Export API\nDevice Transfer API\nTask Status API\nFUOTA API\nMulticast API\nAPI Reference\nThe Application REST APIs allow system administrators and Application Providers to send downlinks and Register/Activate/Deactivate Devices for an Application. An API key is required to authenticate API usage. API keys are created and managed in theAPI Keysview.\nResponse messages are JSON-formatted.\nTo get started with the Application APIs, see theSwagger API Documentation.\nUplink API\nDevice uplink messages heard by one or more gateways are relayed to the network server which in turn the server securely forwards the data to an IoT platform.\nFor more information on the data streaming endpoint implementation, see theSwagger Data Stream Documentation.\nApplication Payload\nIn addition to streaming the payload data (pdu), network information is included. Optionally, RF information about each transmission can be added by enabling \"Include RF Data\" in the notification target's configuration.\nThe Senet Network supports the standardJSONobject model where each object contains one-to-many key/values pairs. TheJSONobject is in the following format:\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\n{\n \"Key\":\"String Value\",\n \"Key\":Numeric Value}\nNote:Senet may add additional fields during future Portal updates. Please ensure that the Application ignores any unknown fields and continue to parse the notification data. Duplicate uplinks are also available on Production with a Contract.\nAll JSON-formatted data contains the following default fields:\nFields\n* Requires contractual agreement\nExample:\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\n{\n \"ack\":true,\n \"ackDnMsgId\":100000,\n \"devClass\":\"A\",\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":216,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"seqno\":1,\n \"txtime\":\"2017-02-09T12:38:38.375Z\"}\nExample with RF Fields:\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":0,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\n{\n \"ack\":true,\n \"channel\":64,\n \"datarate\":0,\n \"devEui\":\"FFFFFFFFFFFFFFFF\",\n \"freq\":903,\n \"gwEui\":\"AAAAAAAAAAAAAAAA\",\n \"joinId\":209,\n \"pdu\":\"01000016D7011400060E06\",\n \"port\":1,\n \"rssi\":-77,\n \"seqno\":1,\n \"ismBand\":\"US915\",\n \"maxPayload\":242,\n \"txtime\":\"2017-02-09T11:35:44.384Z\"}\nBatching\nBatching is the process of delaying the forwarding of a notification to see if it can be grouped with other notifications going to the same endpoint. Batching is more efficient for both the Network Server and for the Customer's endpoint. Many messages can be transferred in the same time that it takes to transfer a single message.\nJSON Format:\nExample: Batching Disabled.Each notification is forwarded northbound to the customer individually using the JSON object model.\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}\nExample: Batching Enabled.A set of notifications received by the Network Server (within a few milliseconds of each other) are forward to the customer in a JSON Array.\n[\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}, \n{\"snr\":8.75, \"devEui\":\"000000000000000B\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.722Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-61, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":907.9, \"pdu\":\"01080100EF020012\", \"channel\":28, \"seqno\":23423}, \n{\"snr\":9.25, \"devEui\":\"000000000000000C\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.723Z\", \"joinId\":2, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-55, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.5, \"pdu\":\"01080100EF020012\", \"channel\":56, \"seqno\":34532}, \n{\"snr\":8.75, \"devEui\":\"000000000000000E\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.724Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-61, \"value1\":247, \"value2\":18, \"port\":1, \"freq\":907.7, \"pdu\":\"01080100F7020012\", \"channel\":27, \"seqno\":76453}, \n{\"snr\":10.75, \"devEui\":\"000000000000000F\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.725Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-60, \"value1\":247, \"value2\":18, \"port\":1, \"freq\":902.5, \"pdu\":\"01080100F7020012\", \"channel\":1, \"seqno\":18743}\n]\n[\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}, \n{\"snr\":8.75, \"devEui\":\"000000000000000B\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.722Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-61, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":907.9, \"pdu\":\"01080100EF020012\", \"channel\":28, \"seqno\":23423}, \n{\"snr\":9.25, \"devEui\":\"000000000000000C\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.723Z\", \"joinId\":2, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-55, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.5, \"pdu\":\"01080100EF020012\", \"channel\":56, \"seqno\":34532}, \n{\"snr\":8.75, \"devEui\":\"000000000000000E\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.724Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-61, \"value1\":247, \"value2\":18, \"port\":1, \"freq\":907.7, \"pdu\":\"01080100F7020012\", \"channel\":27, \"seqno\":76453}, \n{\"snr\":10.75, \"devEui\":\"000000000000000F\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.725Z\", \"joinId\":1, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-60, \"value1\":247, \"value2\":18, \"port\":1, \"freq\":902.5, \"pdu\":\"01080100F7020012\", \"channel\":1, \"seqno\":18743}\n]\nWhen batching is enabled, if only one message is available to be forwarded, it will still be forwarded using the batch format.\n[\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}\n]\n[\n{\"snr\":9.25, \"devEui\":\"000000000000000A\", \"datarate\":3, \"dup\":false, \"txtime\":\"2020-10-19T18:58:42.721Z\", \"joinId\":10, \"gwEui\":\"FFFFFFFFFFFFFFFF\", \"rssi\":-57, \"value1\":239, \"value2\":18, \"port\":1, \"freq\":913.3, \"pdu\":\"01080100EF020012\", \"channel\":55, \"seqno\":74503}\n]\nDownlink API\nSenet provides a simple API for sending Application downlinks to devices. In addition to the Application Payload, users can specify the LoRa-level FPort and Confirmed settings, as well as a timeout threshold for how long the Network waits until foregoing transmission or receiving acknowledgement when expected. Downlink queues support up to 3 downlinks and are cleared in one of the following ways: transmission, timeout, a newer downlink request with the 'clear' parameter set 'True', or a separate request to theClear Downlinks API.\nNotifier endpoint implementations can leverage the Downlink API in numerous ways. For example, a downlink POST request is automatically triggered in response to an uplink notification. With low-enough round-trip time between the Notifier and its endpoint, including the 'immediate' parameter set to 'True' in the downlink request ensures the Network will send it against one of the current uplink's receive windows.\nWhen Downlink requests are successful, the response will include a unique-, numeric message identifier ('msgId'). This is distinct from the sequence number (FCntDn) allocated when a downlink is sent, allowing traceability of specific downlink Application payloads.\nAll Downlink API requests require an authorization key passed either as a URL parameter or in an authorization header. Senet API keys are 44-character alpha-numeric strings with a prefix of either “AK2:” or “AK3:”. SeeAPI Key Managementfor more information about acquiring API Authorization Keys.\nSend Downlink To Device\nhttps://api.senetco.io/rest/integration/device/sendmsg\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://api.senetco.io/rest/integration/device/sendmsg?eui=AAAAAAAAAAAAAAAA&pdu=0102030405060708090a0b0c0d0e0f&confirmed=true&port=88&timeoutMinutes=2\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://api.senetco.io/rest/integration/device/sendmsg?eui=AAAAAAAAAAAAAAAA&pdu=0102030405060708090a0b0c0d0e0f&confirmed=true&port=88&timeoutMinutes=2\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Multicast\nSend multicast downlink messages to a multicast session allowing a user specified list of Base Stations to transmit on.\nhttps://api.senetco.io/rest/integration/device/sendmcastmsg\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\ncurl -H\"authorization: <API_KEY>\"-XPOST\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\nDownlink API - Clear Downlinks\nClears queued downlink messages. If a specific message ID is supplied, only that downlink will be cleared, otherwise all queued messages are cleared.\nhttps://api.senetco.io/rest/integration/device/clearmsgs\n\nPOST\n\ncurl -H\"authorization: AK2:APIKEY\"-XPOST\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\ncurl -H\"authorization: AK2:APIKEY\"-XPOST\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\"\n{\"clearedIds\":[00001]}\n}\n{\"clearedIds\":[00001]}\n}\nDevice Onboarding APIs\nSenet offers a series of APIs that are used to automate the process of onboarding Devices onto the Senet Network, and facilitate the management of these Devices throughout their lifecycle. The onboarding process encompasses the Registration of Devices (loading the DevEUI/RootKey(s) onto the Join Server), followed by the Activation of those Devices (authorizing the DevEUIs to Join the network). Devices may be Deactivated once they have Joined the network or prior to Joining the network, in which case a Join attempt will be prevented. Devices that Joined the network in a Deactivated state and continue to communicate on the network, remain in a billable state until the Device is no longer communicating or is forced to re-Join the network.\nThe APIs were architected with the expectation the onboarding workflows are used for bulk transactions, such that the Registration, Activation and Deactivation calls would apply to a large number of Devices. To validate the completion of the workflow, calling theTask Status APIis required to verify that the requested operation completes successfully prior to initiating another job request. Only one job request can run at a time per Application. Additional API calls initiated prior to the completion of a running job will result in a failure.\nThe Registration of 1,000 Devices would typically take around 1 second, while Registration of 10,000 Devices completes in less than 5 seconds. Activation of 1,000 Devices will take around 5 seconds and it is expected that Activation of 10,000 Devices will complete in under 40 seconds.\nPlease seeOverviewin Device Management for detailed information on the Device Registration LifeCycle along with associating Contracts and other metadata to each Device.\nDevice Registration API\nThe first step in the onboarding process, Registration accomplishes the following:\nProvisions the Device EUI-to-Root Key(s) mappings to the appropriate Join Server.\nInitial Customer Contract association for and billing.\nInitial assignment of the Device Profile for LoRaWAN management.\nNote:Registration of a Device doesnottransition it to an active billing state.\nNote:If \"Do Not Set\" is selected for eitherContractorDevice Profileduring Registration, these may set during Activation.\nNote:Registration requests must be submitted with a security token. Refer toDevice Registrationfor information about obtaining a token.\nBecause Registration may involve large amounts of data, this API works in conjunction with theTask Status API: responses to successful Registration requests contain a Task Job ID that can be used to monitor the progress of the Registration task. Although only one task can run per Application, Senet recommends ensuring previous operations are complete prior to initiating a new Device Management job.\nhttps://api.senetco.io/rest/integration/device/register\n\nPOST\n\n\n\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC1\"}\n ]}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC1\"}\n ]}\n\n\n{\"data\":[{\"devEui\":\"FFFFFFFFFFFFFFF1\",\"devAddr\":\"FFFFFFFF\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":40.7484445,\"lng\":-73.9878584,\"tags\":\"tag1\",\"devType\":\"WATER_SENSOR\"},{\"devEui\":\"FFFFFFFFFFFFFFF2\",\"devAddr\":\"FFFFFFFF\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\n . . .\n ]}\n{\"data\":[{\"devEui\":\"FFFFFFFFFFFFFFF1\",\"devAddr\":\"FFFFFFFF\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":40.7484445,\"lng\":-73.9878584,\"tags\":\"tag1\",\"devType\":\"WATER_SENSOR\"},{\"devEui\":\"FFFFFFFFFFFFFFF2\",\"devAddr\":\"FFFFFFFF\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\n . . .\n ]}\nA callback URL can be specified in the request to receive results after a bulk operation is complete. The server will POST the results in JSON format to the callback URL.\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC1\"}\n ],\n \"callback\":{ \n \"url\":\"https://example-callback.com/endpoint\",\n \"headers\":{ \n \"X-API-Key\":\"123456789abcdef\"}}}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"123AAAAAAAAAAAAAAAA000000000ABC1\"}\n ],\n \"callback\":{ \n \"url\":\"https://example-callback.com/endpoint\",\n \"headers\":{ \n \"X-API-Key\":\"123456789abcdef\"}}}\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\",\"appKey\":\"0ABCDEF0120000010A00000012000001\",\"lat\":42.356959,\"lng\":-71.053271},{\"devEui\":\"0A00000012000002\",\"appKey\":\"0ABCDEF0120000010A00000012000002\",\"lat\":42.356779,\"lng\":-71.065271}]}'\"https://api.senetco.io/rest/integration/device/register?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\",\"appKey\":\"0ABCDEF0120000010A00000012000001\",\"lat\":42.356959,\"lng\":-71.053271},{\"devEui\":\"0A00000012000002\",\"appKey\":\"0ABCDEF0120000010A00000012000002\",\"lat\":42.356779,\"lng\":-71.065271}]}'\"https://api.senetco.io/rest/integration/device/register?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"FFFFFFFFFFFFFFF1\",\"devAddr\":\"FFFFFFF1\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":42.356959,\"lng\":-71.053271}, {\"devEui\":\"FFFFFFFFFFFFFFF2\",\"devAddr\":\"FFFFFFF2\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":42.356959,\"lng\":-71.053271}]}'\"https://api.senetco.io/rest/integration/device/register?actType=ABP&appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"FFFFFFFFFFFFFFF1\",\"devAddr\":\"FFFFFFF1\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":42.356959,\"lng\":-71.053271}, {\"devEui\":\"FFFFFFFFFFFFFFF2\",\"devAddr\":\"FFFFFFF2\",\"appSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"nwkSKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\",\"lat\":42.356959,\"lng\":-71.053271}]}'\"https://api.senetco.io/rest/integration/device/register?actType=ABP&appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\nDevice Activation API\nActivate registered or deactivated Devices on the managed Application. An Activated Device may join the network and start uplinking.\nNote:Activating a Device transitions it to an active billing state.\nBecause Activation may involve large amounts of data, this API works in conjunction with theTask Status API: responses to successful Activation requests contain a Task Job ID that can be used to monitor the progress of the Activation task. Although only one task can run per Application, Senet recommends ensuring previous operations are complete prior to initiating a new Device Management job.\nBulk Activation\nhttps://api.senetco.io/rest/integration/device/activate\n\nPOST\n\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\"}\n ]}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\"},\n { \n \"devEui\":\"123000000000ABC1\"}\n ]}\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\",\"lat\":42.356959,\"lng\":-71.053271},{\"devEui\":\"0A00000012000002\",\"lat\":42.356779,\"lng\":-71.065271}]}'\"https://api.senetco.io/rest/integration/device/activate?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\",\"lat\":42.356959,\"lng\":-71.053271},{\"devEui\":\"0A00000012000002\",\"lat\":42.356779,\"lng\":-71.065271}]}'\"https://api.senetco.io/rest/integration/device/activate?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\nIndividual Activation\nhttps://api.senetco.io/rest/integration/device/activateOne\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-XPOST\"https://api.senetco.io/rest/integration/device/activateOne?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-XPOST\"https://api.senetco.io/rest/integration/device/activateOne?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271\"\n{\n \"message\":\"Device successfully Activated\"}\n{\n \"message\":\"Device successfully Activated\"}\nDevice Deactivation API\nDeactivated Devices cannot join or rejoin the Network. Previously joined Devices that are Deactivated will continue uplinking in the context of their previously established security session\nNote:Deactivated Devices that continue communicating on the Network are in an active billing state. The Network must not hear Deactivated Devices for a complete billing cycle to prevent billing.\nBecause Deactivation may involve large amounts of data, this API works in conjunction with theTask Status API: responses to successful Deactivation requests contain a Task Job ID that can be used to monitor the progress of the Deactivation task. Although only one task can run per Application, Senet recommends ensuring previous operations are complete prior to initiating a new Device Management job.\nhttps://api.senetco.io/rest/integration/device/deactivate\n\nPOST\n\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\"},\n { \n \"devEui\":\"123000000000ABC1\"}\n ]}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\"},\n { \n \"devEui\":\"123000000000ABC1\"}\n ]}\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\"},{\"devEui\":\"0A00000012000002\"}]}'\"https://api.senetco.io/rest/integration/device/deactivate?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\"},{\"devEui\":\"0A00000012000002\"}]}'\"https://api.senetco.io/rest/integration/device/deactivate?appEui=AAAAAAAAAAAAAA01&joinEui=AAAAAAAAAAAAAA01&contractId=<contract>\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"}\nDevice Update API\nUpdate fields of Devices that have joined on the managed Application. The Devices' latitude, longitude, tags, metadata, devType, devClass, fwVer, appKey and nwkKey fields can be edited. Tags in the update can append, replace or delete existing tags based on the selected operation. The tags can be specified for individual Devices in the JSON data or for the full set of Devices in the request by using the tags parameter. The latitude and longitude values in the JSON will always replace the existing Device data.\nOnly one task per Application is allowed to run at the same time. The response of a successful request is a URL to GET the status of the update task. SeeTask Status APIfor more information.\nhttps://api.senetco.io/rest/integration/device/update\n\nPOST\n\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\n \"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\n \"lat\":43.0775992,\n \"lng\":-70.7596765,\n \"tags\":\"tag1,tag2\",\n \"devType\":\"WATER_SENSOR\",\n \"devClass\":\"CLASS_B\",\n \"fwVer\" :\"1.0.0\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2\",\n \"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2\", \n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\",\n \"devClass\":\"CLASS_C\",\n \"fwVer\" :\"1.0.0\"}\n ]}\n{ \n \"data\":[ \n { \n \"devEui\":\"123000000000ABC0\",\n \"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\n \"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\n \"lat\":43.0775992,\n \"lng\":-70.7596765,\n \"tags\":\"tag1,tag2\",\n \"devType\":\"WATER_SENSOR\",\n \"devClass\":\"CLASS_B\",\n \"fwVer\" :\"1.0.0\"},\n { \n \"devEui\":\"123000000000ABC1\",\n \"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2\",\n \"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2\", \n \"lat\":40.7484445,\n \"lng\":-73.9878584,\n \"tags\":\"tag1\",\n \"devType\":\"WATER_SENSOR\",\n \"devClass\":\"CLASS_C\",\n \"fwVer\" :\"1.0.0\"}\n ]}\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"123000000000ABC0\",\"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\"lat\":43.0775992,\"lng\":-70.7596765,\"tags\":\"tag1,tag2\",\"devType\":\"WATER_SENSOR\",\"devClass\":\"CLASS_B\",\"fwVer\":\"1.0.0\"},{\"devEui\":\"123000000000ABC1\",\"lat\":40.7484445,\"lng\":-73.9878584,\"tags\":\"tag1\",\"devType\":\"WATER_SENSOR\",\"devClass\":\"CLASS_C\",\"fwVer\":\"1.0.0\"}]}' -XPOST\"https://api.senetco.io/rest/integration/device/update?appEui=AAAAAAAAAAAAAA01&tagsOperation=APPEND\"\ncurl -H\"authorization: <API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"123000000000ABC0\",\"appKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\"nwkKey\":\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1\",\"lat\":43.0775992,\"lng\":-70.7596765,\"tags\":\"tag1,tag2\",\"devType\":\"WATER_SENSOR\",\"devClass\":\"CLASS_B\",\"fwVer\":\"1.0.0\"},{\"devEui\":\"123000000000ABC1\",\"lat\":40.7484445,\"lng\":-73.9878584,\"tags\":\"tag1\",\"devType\":\"WATER_SENSOR\",\"devClass\":\"CLASS_C\",\"fwVer\":\"1.0.0\"}]}' -XPOST\"https://api.senetco.io/rest/integration/device/update?appEui=AAAAAAAAAAAAAA01&tagsOperation=APPEND\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevUpdateJobReq:AAAAAAAAAAAAAA01\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevUpdateJobReq:AAAAAAAAAAAAAA01\"}\nDevice Export API\nExport Device data from the managed Application. The data returned from the API is formatted for a CSV file.\nhttps://api.senetco.io/rest/integration/device/csvExport\n\nGET\n\nThe following Device fields can be used with the 'fields' parameter:\ndevEui,contract,tags,metadata,state,registrationDate,activationDate,deactivationDate,lastHeardFrom,lastJoinTime,\nfirstJoinTime,yestBstns,yestPsr,yestAvgRssi,yestAvgSnr,lat,lng,profId,devType,devAddr,estLat,estLng,txPeriod,\ntxPower,curDr,adrChg,fwVer,serviceMetrics,metricA,metricB,metricC,joinEui\ndevEui,contract,tags,metadata,state,registrationDate,activationDate,deactivationDate,lastHeardFrom,lastJoinTime,\nfirstJoinTime,yestBstns,yestPsr,yestAvgRssi,yestAvgSnr,lat,lng,profId,devType,devAddr,estLat,estLng,txPeriod,\ntxPower,curDr,adrChg,fwVer,serviceMetrics,metricA,metricB,metricC,joinEui\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\"> device_export.csv\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\"> device_export.csv\nDev EUI,Contract,Tags,State,Registration Date,Activation Date,Deactivation Date,Last Heard From\n123000000000ABC0,99,,ACTIVATED,03/31/2017 11:37:30 PM UTC,03/31/2017 11:37:30 PM UTC,,04/03/2018 01:54:02 PM UTC\n123000000000ABC1,99,,ACTIVATED,03/31/2017 11:25:49 PM UTC,03/31/2017 11:25:49 PM UTC,,04/03/2018 00:27:38 PM UTC\n123000000000ABC2,99,,ACTIVATED,03/31/2017 11:04:48 PM UTC,03/31/2017 11:04:48 PM UTC,,09/25/2019 09:38:10 AM UTC\nDev EUI,Contract,Tags,State,Registration Date,Activation Date,Deactivation Date,Last Heard From\n123000000000ABC0,99,,ACTIVATED,03/31/2017 11:37:30 PM UTC,03/31/2017 11:37:30 PM UTC,,04/03/2018 01:54:02 PM UTC\n123000000000ABC1,99,,ACTIVATED,03/31/2017 11:25:49 PM UTC,03/31/2017 11:25:49 PM UTC,,04/03/2018 00:27:38 PM UTC\n123000000000ABC2,99,,ACTIVATED,03/31/2017 11:04:48 PM UTC,03/31/2017 11:04:48 PM UTC,,09/25/2019 09:38:10 AM UTC\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/csvExport?appEui=AAAAAAAAAAAAAA01&contractId=2&fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom,serviceMetrics\"> service_metric_data.csv\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/csvExport?appEui=AAAAAAAAAAAAAA01&contractId=2&fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom,serviceMetrics\"> service_metric_data.csv\nDev EUI,Contract,Tags,State,Registration Date,Activation Date,Deactivation Date,Last Heard From,Metric A,Metric B,Metric C\n123000000000ABC0,2,\"Test,tag1,tag22\",ACTIVATED,03/31/2017 11:37:30 PM UTC,03/31/2017 11:37:30 PM UTC,09/03/2019 09:04:07 PM UTC,07/07/2020 02:39:46 PM UTC,80,100,100\nDev EUI,Contract,Tags,State,Registration Date,Activation Date,Deactivation Date,Last Heard From,Metric A,Metric B,Metric C\n123000000000ABC0,2,\"Test,tag1,tag22\",ACTIVATED,03/31/2017 11:37:30 PM UTC,03/31/2017 11:37:30 PM UTC,09/03/2019 09:04:07 PM UTC,07/07/2020 02:39:46 PM UTC,80,100,100\nDevice Transfer API\nDevices may be transferred between Accounts, specifically between Applications. Transfer between Applications belonging to the same Account is also supported.\nThe response to a successful Device Transfer request contains a job status URL which in turn can be used to check the progress of the transfer task.Task Status APIfor more information.\nAll Transfers are constrained by or require the following:\nOnly one task per Application may run at a time.\nAn API key with sufficient access for the source and as well as the destination Application. These API keys must be included in the HTTP Header as fields: Authorization (source) and Authorization2 (destination).\nThe destination Application must support the Join Server(s) associated with the Devices being transferred.\nThe destination Account must have access to identified Contract and Device Profile to be used by the transferred Devices.\nhttps://api.senetco.io/rest/integration/device/transfer\n\nPOST\n\n{\n \"data\":[\n {\n \"devEui\":\"123000000000ABC0\"},\n {\n \"devEui\":\"123000000000ABC1\"}\n ]}\n{\n \"data\":[\n {\n \"devEui\":\"123000000000ABC0\"},\n {\n \"devEui\":\"123000000000ABC1\"}\n ]}\ncurl -H\"authorization: <CUR_APP_API_KEY>\"-H\"authorization2: <NEW_APP_API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\"},{\"devEui\":\"0A00000012000002\"}]}' -XPOST\"https://api.senetco.io/rest/integration/device/transfer?fromAppEui=A1A1A1A1A1A1A1A1&toAppEui=A2A2A2A2A2A2A2A2&contractId=123456\"\ncurl -H\"authorization: <CUR_APP_API_KEY>\"-H\"authorization2: <NEW_APP_API_KEY>\"-H\"Content-Type: application/json\"-d'{\"data\":[{\"devEui\":\"0A00000012000001\"},{\"devEui\":\"0A00000012000002\"}]}' -XPOST\"https://api.senetco.io/rest/integration/device/transfer?fromAppEui=A1A1A1A1A1A1A1A1&toAppEui=A2A2A2A2A2A2A2A2&contractId=123456\"\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevTransferJobReq:A1A1A1A1A1A1A1A1-A2A2A2A2A2A2A2A2\"}\n{ \n \"statusUrl\":\"https://api.senetco.io/rest/integration/device/status?reqId=DevTransferJobReq:A1A1A1A1A1A1A1A1-A2A2A2A2A2A2A2A2\"}\nTask Status API\nGet the status of an ongoing Device Registration, Activation or Deactivation task. The Task Status API is used to confirm the preceding operation completes prior to initiating a subsequent request. The status is available for 15 minutes after the task completes.\nhttps://api.senetco.io/rest/integration/device/status\n\nGET\n\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:AAAAAAAAAAAAAA01\"\n{ \n \"state\":\"DONE_SUC\",\n \"result\":{ \n \"status\":\"Device activation on App EUI: AAAAAAAAAAAAAA01 completed. Activated: 0 Updated: 0 Not Changed: 0 Errors: 1\",\n \"msgs\":[\"DevEUI: 1230000000000ABC has not been registered. The Device cannot be Activated on JoinEUI: AAAAAAAAAAAAAA01.\"],\n \"stats\":{\n \"activated\":0,\n \"updated\":0,\n \"notChanged\":0,\n \"errors\":1}},\n \"pctDone\":100}\n{ \n \"state\":\"DONE_SUC\",\n \"result\":{ \n \"status\":\"Device activation on App EUI: AAAAAAAAAAAAAA01 completed. Activated: 0 Updated: 0 Not Changed: 0 Errors: 1\",\n \"msgs\":[\"DevEUI: 1230000000000ABC has not been registered. The Device cannot be Activated on JoinEUI: AAAAAAAAAAAAAA01.\"],\n \"stats\":{\n \"activated\":0,\n \"updated\":0,\n \"notChanged\":0,\n \"errors\":1}},\n \"pctDone\":100}\n200The task specified was successfully found. The latest status is returned.\n400The reqId parameter is missing or invalid.\n403The API key is not authorized to get the status of the task.\n404No task could be found with the requested reqId.\nCurrent status of the task expressed as a percentage (0 to 100).\nCurrent state of the task.\nSummary of the task after completion.\nMessages describing any errors that occurred while running the task.\nFUOTA API\nAllows users toinitiate-,cancel-, orcheck the status of a FUOTA tasktargeting a set of Devices associated to the same Application. Each of these actions has a distinct resource URL with corresponding parameters, detailed below.\nFUOTA Task Initiation\nhttps://api.senetco.io/rest/integration/mcastTransfer\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST-F\"file=@patch-to_new.bin\"\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=AAAAAAAAAAAAAA01&devEuis=123000000000ABC0,123000000000ABC1&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST-F\"file=@patch-to_new.bin\"\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=AAAAAAAAAAAAAA01&devEuis=123000000000ABC0,123000000000ABC1&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\"\n{ \n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"responseMsg\":\"MCastXferJobReq job starting in: 00:01:59\",\n \"statusCode\":200}\n{ \n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"responseMsg\":\"MCastXferJobReq job starting in: 00:01:59\",\n \"statusCode\":200}\n\nFUOTA Task Cancellation\nhttps://api.senetco.io/rest/integration/mcastCancel\n\nPOST\n\n*Conditionally required. Either a Job IDORa combination of an Application EUI and a list of Device EUIs or tags is required.\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcastCancel?jobId=MCastXferJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcastCancel?jobId=MCastXferJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcastCancel?appEui=AAAAAAAAAAAAAA01&devEuis=123000000000ABC0,123000000000ABC1\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcastCancel?appEui=AAAAAAAAAAAAAA01&devEuis=123000000000ABC0,123000000000ABC1\"\n{ \n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"responseMsg\":\"MCastXferJobReq job cancelled.\",\n \"statusCode\":200}\n{ \n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"responseMsg\":\"MCastXferJobReq job cancelled.\",\n \"statusCode\":200}\n\nFUOTA Task Status\nhttps://api.senetco.io/rest/integration/mcastStatus\n\nGET\n\n*Conditionally required. Either a Job IDORan Application EUI is required to get the status for a pending or running FUOTA job.\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcastStatus?jobId=MCastXferJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcastStatus?jobId=MCastXferJobReq:AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcastStatus?appEui=AAAAAAAAAAAAAA01\"\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcastStatus?appEui=AAAAAAAAAAAAAA01\"\n{\n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"serverId\":\"string\",\n \"state\":\"Running\",\n \"startTime\":0,\n \"endTime\":0,\n \"removeTime\":0,\n \"pctDone\":0,\n \"username\":\"string\",\n \"result\":\"string\",\n \"acctId\":0,\n \"operId\":0,\n \"jobLauncherClsNm\":\"string\"}\n{\n \"jobId\":\"MCastXferJobReq:AAAAAAAAAAAAAA01\",\n \"serverId\":\"string\",\n \"state\":\"Running\",\n \"startTime\":0,\n \"endTime\":0,\n \"removeTime\":0,\n \"pctDone\":0,\n \"username\":\"string\",\n \"result\":\"string\",\n \"acctId\":0,\n \"operId\":0,\n \"jobLauncherClsNm\":\"string\"}\nMulticast API\nAllows users tosetup-,modify-,check the status of-,send downlinks to-, andremovea Multicast Group targeting a set of Devices associated to the same Application. Each of these actions has a distinct resource URL with corresponding parameters, detailed below.\nMulticast Group Setup\nhttps://api.senetco.io/rest/integration/mcast/setup\n\nPOST\n\n*Conditionally required. Either a list of Device EUIsORa list of Device tags is required.\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=C&txChnl=7&txDr=13&type=D2D\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=C&txChnl=7&txDr=13&type=D2D\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initializing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initializing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initializing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initializing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n\nAdd Devices To Existing Multicast Group\nhttps://api.senetco.io/rest/integration/mcast/addDevices\n\nPOST\n\n*Conditionally required. Either a list of Device EUIsORa list of Device tags is required.\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE02\",\n \"groupId\":1,\n \"state\":\"Initializing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE03\",\n \"groupId\":2,\n \"state\":\"Initializing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE02\",\n \"groupId\":1,\n \"state\":\"Initializing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE03\",\n \"groupId\":2,\n \"state\":\"Initializing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n\nRemove Devices From Existing Multicast Group\nhttps://api.senetco.io/rest/integration/mcast/removeDevices\n\nPOST\n\n*Conditionally required. Either a list of Device EUIsORa list of Device tags is required.\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE02\",\n \"groupId\":1,\n \"state\":\"Closing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE03\",\n \"groupId\":2,\n \"state\":\"Closing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE02\",\n \"groupId\":1,\n \"state\":\"Closing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE03\",\n \"groupId\":2,\n \"state\":\"Closing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n\nMulticast Group Status\nhttps://api.senetco.io/rest/integration/mcast/status\n\nGET\n\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\"\ncurl -H\"authorization: <API_KEY>\"--insecure\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Failed\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Initialized\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Failed\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n\nSend Downlink To Multicast Group\nhttps://api.senetco.io/rest/integration/mcast/sendmsg\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\"\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n{ \n \"message\":\"Success!\",\n \"msgId\":119}\n\nMulticast Group Removal\nhttps://api.senetco.io/rest/integration/mcast/delete\n\nPOST\n\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\"\ncurl -H\"authorization: <API_KEY>\"--insecure -XPOST\"https://api.senetco.io/rest/integration/mcast/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\"\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Closing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Closing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\n{\n \"appEui\":\"AAAAAAAAAAAAAA01\",\n \"devClass\":\"CLASS_C\",\n \"devs\":[\n {\n \"devEui\":\"DEDEDEDEDEDEDE00\",\n \"groupId\":3,\n \"state\":\"Closing\"},\n {\n \"devEui\":\"DEDEDEDEDEDEDE01\",\n \"groupId\":2,\n \"state\":\"Closing\"}\n ],\n \"dr\":13,\n \"durationSecs\":32768,\n \"endTime\":1643414453519,\n \"freq\":927.5,\n \"maxFCnt\":4294967296,\n \"mcAddr\":\"BBBBBB01\",\n \"mcastType\":\"D2D\",\n \"minFCnt\":1327416903,\n \"startTime\":1643381685519}\nDocumentation built withMkDocs.Version: 43.25.02.18.1127Copyright © Senet 2024. All Rights Reserved\nSearch the Application Provider documentation. Enter your search terms below.\nNavigate to a different documentation page:Developer,RAN Provider"
709 },
710 {
711 "platform": "Senet",
712 "type": "api",
713 "source": "/rest/integration/bstn/deploy",
714 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
715 },
716 {
717 "platform": "Senet",
718 "type": "api",
719 "source": "/rest/integration/bstn/deploy",
720 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
721 },
722 {
723 "platform": "Senet",
724 "type": "api",
725 "source": "/rest/integration/bstn/deploy",
726 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
727 },
728 {
729 "platform": "Senet",
730 "type": "api",
731 "source": "/rest/integration/bstn/deploy",
732 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
733 },
734 {
735 "platform": "Senet",
736 "type": "api",
737 "source": "/rest/integration/bstn/deploy",
738 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
739 },
740 {
741 "platform": "Senet",
742 "type": "api",
743 "source": "/rest/integration/bstn/deploy",
744 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
745 },
746 {
747 "platform": "Senet",
748 "type": "api",
749 "source": "/rest/integration/bstn/deploy",
750 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
751 },
752 {
753 "platform": "Senet",
754 "type": "api",
755 "source": "/rest/integration/bstn/deploy",
756 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
757 },
758 {
759 "platform": "Senet",
760 "type": "api",
761 "source": "/rest/integration/bstn/deploy",
762 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
763 },
764 {
765 "platform": "Senet",
766 "type": "api",
767 "source": "/rest/integration/bstn/deploy",
768 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
769 },
770 {
771 "platform": "Senet",
772 "type": "api",
773 "source": "/rest/integration/bstn/deploy",
774 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
775 },
776 {
777 "platform": "Senet",
778 "type": "api",
779 "source": "/rest/integration/bstn/deploy",
780 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
781 },
782 {
783 "platform": "Senet",
784 "type": "api",
785 "source": "/rest/integration/bstn/deploy",
786 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
787 },
788 {
789 "platform": "Senet",
790 "type": "api",
791 "source": "/rest/integration/bstn/deploy",
792 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
793 },
794 {
795 "platform": "Senet",
796 "type": "api",
797 "source": "/rest/integration/bstn/deploy",
798 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
799 },
800 {
801 "platform": "Senet",
802 "type": "api",
803 "source": "/rest/integration/bstn/deploy",
804 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
805 },
806 {
807 "platform": "Senet",
808 "type": "api",
809 "source": "/rest/integration/bstn/deploy",
810 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
811 },
812 {
813 "platform": "Senet",
814 "type": "api",
815 "source": "/rest/integration/bstn/deploy",
816 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
817 },
818 {
819 "platform": "Senet",
820 "type": "api",
821 "source": "/rest/integration/bstn/deploy",
822 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
823 },
824 {
825 "platform": "Senet",
826 "type": "api",
827 "source": "/rest/integration/bstn/deploy",
828 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
829 },
830 {
831 "platform": "Senet",
832 "type": "api",
833 "source": "/rest/integration/bstn/deploy",
834 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
835 },
836 {
837 "platform": "Senet",
838 "type": "api",
839 "source": "/rest/integration/bstn/deploy",
840 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
841 },
842 {
843 "platform": "Senet",
844 "type": "api",
845 "source": "/rest/integration/bstn/deploy",
846 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
847 },
848 {
849 "platform": "Senet",
850 "type": "api",
851 "source": "/rest/integration/bstn/deploy",
852 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
853 },
854 {
855 "platform": "Senet",
856 "type": "api",
857 "source": "/rest/integration/bstn/deploy",
858 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
859 },
860 {
861 "platform": "Senet",
862 "type": "api",
863 "source": "/rest/integration/bstn/deploy",
864 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
865 },
866 {
867 "platform": "Senet",
868 "type": "api",
869 "source": "/rest/integration/bstn/deploy",
870 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
871 },
872 {
873 "platform": "Senet",
874 "type": "api",
875 "source": "/rest/integration/bstn/deploy",
876 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
877 },
878 {
879 "platform": "Senet",
880 "type": "api",
881 "source": "/rest/integration/bstn/deploy",
882 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
883 },
884 {
885 "platform": "Senet",
886 "type": "api",
887 "source": "/rest/integration/bstn/deploy",
888 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
889 },
890 {
891 "platform": "Senet",
892 "type": "api",
893 "source": "/rest/integration/bstn/deploy",
894 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
895 },
896 {
897 "platform": "Senet",
898 "type": "api",
899 "source": "/rest/integration/bstn/deploy",
900 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
901 },
902 {
903 "platform": "Senet",
904 "type": "api",
905 "source": "/rest/integration/bstn/deploy",
906 "content": "{\"method\": \"POST\", \"url\": \"/rest/integration/bstn/deploy\", \"description\": \"The Base Station Deploy API is designed to allow deployment of a Base Station dynamically post install.\", \"parameters\": [], \"example_requests\": [\"v1.0\", \"OAS3\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"Example:\\ncurl -X POST \\\\ 'https://api.senetco.io/rest/integration/bstn/deploy?eui=FEFFFFFFFFFF0001' \\\\ -H 'Authorization: <your api key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"address\\\": \\\"100 Market Street\\\", \\\"city\\\": \\\"Portsmouth\\\", \\\"stateProvince\\\": \\\"NH\\\", \\\"postalCode\\\": \\\"03801\\\", \\\"name\\\": \\\"Provisioned BSTN\\\", \\\"latitude\\\": 44.071568, \\\"longitude\\\": -70.762245, \\\"height\\\": 100, \\\"radius\\\": 10 }'\", \"{\\n \\\"address\\\": \\\"100 Market Street\\\",\\n \\\"city\\\": \\\"Portsmouth\\\",\\n \\\"stateProvince\\\": \\\"NH\\\",\\n \\\"postalCode\\\": \\\"03801\\\",\\n \\\"name\\\": \\\"Site 1\\\",\\n \\\"latitude\\\": 40.7484445,\\n \\\"longitude\\\": -73.9878584,\\n \\\"height\\\": 32.1634,\\n \\\"radius\\\": 10\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/deploy?eui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"address\\\\\\\":\\\\\\\"100 Market Street\\\\\\\",\\\\\\\"city\\\\\\\":\\\\\\\"Portsmouth\\\\\\\",\\\\\\\"stateProvince\\\\\\\":\\\\\\\"NH\\\\\\\",\\\\\\\"postalCode\\\\\\\":\\\\\\\"03801\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"Site 1\\\\\\\",\\\\\\\"latitude\\\\\\\":40.7484445,\\\\\\\"longitude\\\\\\\":-73.9878584,\\\\\\\"height\\\\\\\":32.1634,\\\\\\\"radius\\\\\\\":10}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"Examples:\\nStatus for Base Stations with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert\\\"\\nStatus for a specific Base Station with open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=alert&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue\\\"\\nStatus for a specific Base Station with connection issues.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=connIssue&eui=AAAAAAAAAAAAAAAA\\\"\\nStatus for Base Stations with or without open alerts.\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any\\\"\\nStatus for a Base Station with or without open alerts, only return fields \\\"status\\\" and \\\"lastContact\\\".\\ncurl -H \\\"authorization: <API_KEY_TO_USE>\\\" -X POST \\\"https://api.senetco.io/rest/integration/bstn/details?status=any&eui=AAAAAAAAAAAAAAAA&fields=status,lastContact\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/details?eui=SOME_STRING_VALUE&status=SOME_STRING_VALUE&fields=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"Example:\\ncurl -X POST \\\\ https://api.senetco.io/rest/integration/bstn/provision \\\\ -H 'Authorization: <your API key>' \\\\ -H 'Content-Type: application/json' \\\\ -d '{ \\\"data\\\": [ { \\\"eui\\\" : \\\"FAFFFFFFFFFF0000\\\", \\\"serialNum\\\" : \\\"TF000000_000000001\\\", \\\"ismBandName\\\" : \\\"EU863-870:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_64\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0001\\\", \\\"serialNum\\\" : \\\"F1F3F2F1\\\", \\\"ismBandName\\\" : \\\"US902-928:Default\\\", \\\"model\\\" : \\\"MULTITECH_CONDUIT\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0002\\\", \\\"serialNum\\\" : \\\"0x0F0F0F3\\\", \\\"ismBandName\\\" : \\\"AU915-928:Default\\\", \\\"model\\\" : \\\"KERLINK_IOTS\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0003\\\", \\\"serialNum\\\" : \\\"1234567890ABCDEF4\\\", \\\"ismBandName\\\" : \\\"India865-867:Default\\\", \\\"model\\\" : \\\"SEMTECH_PKT_FORWARDER\\\" }, { \\\"eui\\\" : \\\"FAFFFFFFFFFF0004\\\", \\\"serialNum\\\" : \\\"TF000000_000000005\\\", \\\"ismBandName\\\" : \\\"AS923:Default\\\", \\\"model\\\" : \\\"TEKTELIC_KONA_8\\\" } ] }'\", \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"ARDUINO_YUN\\\",\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"tags\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/bstn/provision\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: application/json\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\ncurl_easy_setopt(hnd, CURLOPT_POSTFIELDS, \\\"{\\\\\\\"data\\\\\\\":[{\\\\\\\"eui\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"model\\\\\\\":\\\\\\\"ARDUINO_YUN\\\\\\\",\\\\\\\"serialNum\\\\\\\":\\\\\\\"string\\\\\\\",\\\\\\\"ismBandName\\\\\\\":\\\\\\\"US902-928:Default\\\\\\\",\\\\\\\"tags\\\\\\\":\\\\\\\"string\\\\\\\"}]}\\\");\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"apiKey\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/stage2PairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"envName\\\": \\\"string\\\",\\n \\\"hostname\\\": \\\"string\\\",\\n \\\"port\\\": 0,\\n \\\"localHostname\\\": \\\"string\\\",\\n \\\"localPort\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"password\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/initiatePairingRequest\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"serialNum\\\": \\\"string\\\",\\n \\\"eui\\\": \\\"string\\\",\\n \\\"model\\\": \\\"string\\\",\\n \\\"lat\\\": 0,\\n \\\"lng\\\": 0\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/bstn/locateAndRegister\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/cluster/ping\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959, \\\"lng\\\":-71.053271},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779, \\\"lng\\\":-71.065271}]}' \\\"https://api.senetco.io/rest/integration/device/activate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": \\\"[ { 'devEui':'123000000000ABC0', 'lat':40.7484445, 'lng':-73.9878584, 'tags':'tag1', 'devType':'WATER_SENSOR' }, { \\\\\\\"devEui\\\\\\\":\\\\\\\"123000000000ABC1\\\\\\\" } ],\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"Example:\\n\\ncurl -H 'authorization: <API_KEY>' -H 'Content-Type: application/json' -X POST 'https://api.senetco.io/rest/integration/device/activateOne?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&devEui=0A00000012000002&devType=WATER_SENSOR&tags=test1,test2&lat=42.356959&lng=-71.053271'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/activateOne?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&devEui=SOME_STRING_VALUE&lat=SOME_NUMBER_VALUE&lng=SOME_NUMBER_VALUE&devType=SOME_STRING_VALUE&metadata=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/clearmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/csvExport?fields=devEui,contract,tags,state,registrationDate,activationDate,deactivationDate,lastHeardFrom\\\" > device_export.csv\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/csvExport?appEui=SOME_STRING_VALUE&fields=SOME_STRING_VALUE&state=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&psrDays=SOME_INTEGER_VALUE&devEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/deactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>\\\"\", \"{\\n \\\"data\\\": \\\"0000000000000000,0000000000000001,00000000000000002,etc.\\\",\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/deactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"devEuis\\\": \\\"['123000000000ABC0', '123000000000ABC1']\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/exportAbp?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"Example:\\ncurl -H \\\"authorization: AK2:APIKEY\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/clearmsgs?devEui=AAAAAAAAAAAAAAAA&msgId=00001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/getmsgs?eui=SOME_STRING_VALUE&msgId=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" \\\"https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/status?reqId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST -F \\\"file=@patch-to_new.bin\\\" \\\"https://api.senetco.io/rest/integration/mcastTransfer?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8&devClass=C&txChnl=7&txDr=13&startDelaySecs=120&fragAlg=FWD_ERR_CORR&redundancy=1.0&millisBetweenPkts=4000&contractId=20\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastTransfer?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&startDelaySecs=SOME_INTEGER_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&fragAlg=SOME_STRING_VALUE&fragPkgVer=SOME_NUMBER_VALUE&devClass=SOME_STRING_VALUE&redundancy=SOME_NUMBER_VALUE&pctReqdDevs=SOME_NUMBER_VALUE&millisBetweenPkts=SOME_INTEGER_VALUE&descriptor=SOME_STRING_VALUE&useMultiPkg=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: multipart/form-data\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://localhost:8444/rest/integration/mcastCancel?appEui=00250C0000010001&devEuis=0080000004003996,00800000040088F8\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastCancel?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"Examples:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?jobId=MCastXferJobReq:00250C0000010001\\\"\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure \\\"https://localhost:8444/rest/integration/mcastStatus?appEui=00250C0000010001\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcastStatus?jobId=SOME_STRING_VALUE&appEui=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/register?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/register?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d '{\\\"data\\\":[{\\\"devEui\\\":\\\"0A00000012000001\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000001\\\",\\\"lat\\\":42.356959,\\\"lng\\\":-71.053271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"},{\\\"devEui\\\":\\\"0A00000012000002\\\",\\\"appKey\\\":\\\"0ABCDEF0120000010A00000012000002\\\",\\\"lat\\\":42.356779,\\\"lng\\\":-71.065271,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"metadata\\\":\\\"metadata1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\"}]}' \\\"https://api.senetco.io/rest/integration/device/registerandactivate?appEui=<application>&joinEui=<joinSvr>&contractId=<contract>&profId=<devProfile>&token=<token>&tags=test1,test2\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\"\\n }\\n ],\\n \\\"callback\\\": {\\n \\\"url\\\": \\\"https://example-callback.com/endpoint\\\",\\n \\\"headers\\\": \\\"'X-API-Key':'ommitted for security' }\\\"\\n }\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/registerandactivate?appEui=SOME_STRING_VALUE&joinEui=SOME_STRING_VALUE&token=SOME_STRING_VALUE&contractId=SOME_INTEGER_VALUE&profId=SOME_INTEGER_VALUE&actType=SOME_STRING_VALUE&tags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/device/sendmcastmsg?addr=12FFFFFF&pdu=0102030405060708090a0b0c0d0e0f&bstnEuis=AAAAAAAAAAAAAAAA,AAAAAAAAAAAAAAAB\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmcastmsg?addr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&bstnEuis=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/sendmsg?eui=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE&confirmed=SOME_BOOLEAN_VALUE&immediate=SOME_BOOLEAN_VALUE&clear=SOME_BOOLEAN_VALUE&class=SOME_STRING_VALUE&timeoutMinutes=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -H \\\"Content-Type: application/json\\\" -d {\\\"data\\\":[{\\\"devEui\\\":\\\"123000000000ABC0\\\",\\\"appKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"nwkKey\\\":\\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\\"lat\\\":43.0775992,\\\"lng\\\":-70.7596765,\\\"tags\\\":\\\"tag1,tag2\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_B\\\",\\\"fwVer\\\":\\\"1.0.0\\\"},{\\\"devEui\\\":\\\"123000000000ABC1\\\",\\\"lat\\\":40.7484445,\\\"lng\\\":-73.9878584,\\\"tags\\\":\\\"tag1\\\",\\\"devType\\\":\\\"WATER_SENSOR\\\",\\\"devClass\\\":\\\"CLASS_C\\\",\\\"fwVer\\\":\\\"1.0.0\\\"}]}' -X POST \\\"https://api.senetco.io/rest/integration/device/update?appEui=00000000000100E0&tagsOperation=APPEND\\\"\", \"{\\n \\\"data\\\": [\\n {\\n \\\"devEui\\\": \\\"0000000000000000\\\",\\n \\\"appKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"nwkKey\\\": \\\"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\\\",\\n \\\"lat\\\": 40.7484445,\\n \\\"lng\\\": -73.9878584,\\n \\\"tags\\\": \\\"tag1,tag2,tag3,etc.\\\",\\n \\\"metadata\\\": \\\"Arbitrary string content\\\",\\n \\\"devType\\\": \\\"WATER_SENSOR\\\",\\n \\\"devClass\\\": \\\"CLASS_A\\\",\\n \\\"fwVer\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/device/update?appEui=SOME_STRING_VALUE&profId=SOME_INTEGER_VALUE&tags=SOME_STRING_VALUE&tagsOperation=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"content-type: */*\\\");\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/addDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/addDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/status?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/status?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&jobId=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/delete?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/delete?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/setup?appEui=AAAAAAAAAAAAAA01&devEuis=DEDEDEDEDEDEDE00,DEDEDEDEDEDEDE01&devClass=B&type=D2D\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/setup?appEui=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&txChnl=SOME_INTEGER_VALUE&txDr=SOME_INTEGER_VALUE&contractId=SOME_INTEGER_VALUE&devClass=SOME_STRING_VALUE&type=SOME_STRING_VALUE&periodicity=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" --insecure -X POST \\\"https://api.senetco.io/rest/integration/mcast/removeDevices?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&devEuis=DEDEDEDEDEDEDD03,DEDEDEDEDEDEDD04\\\",\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/removeDevices?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&devEuis=SOME_STRING_VALUE&devTags=SOME_STRING_VALUE&force=SOME_BOOLEAN_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"Example:\\ncurl -H \\\"authorization: <API_KEY>\\\" -X POST \\\"https://api.senetco.io/rest/integration/mcast/sendmsg?appEui=AAAAAAAAAAAAAA01&mcAddr=BBBBBB01&pdu=0102030405060708090a0b0c0d0e0f\\\"\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"POST\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/mcast/sendmsg?appEui=SOME_STRING_VALUE&type=SOME_STRING_VALUE&mcAddr=SOME_STRING_VALUE&pdu=SOME_STRING_VALUE&port=SOME_INTEGER_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/contracts?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/contracts?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/details?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/details?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"Example:\\ncurl -X GET \\\\ 'https://api.senetco.io/rest/integration/usage/summary?eui=<EUI>&year=<YEAR>&month=<MONTH>' -H 'Authorization: <API_KEY_TO_USE>'\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"CURL *hnd = curl_easy_init();\\n\\ncurl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, \\\"GET\\\");\\ncurl_easy_setopt(hnd, CURLOPT_URL, \\\"http://api.senetco.io/rest/integration/usage/summary?eui=SOME_STRING_VALUE&month=SOME_STRING_VALUE&year=SOME_STRING_VALUE\\\");\\n\\nstruct curl_slist *headers = NULL;\\nheaders = curl_slist_append(headers, \\\"authorization: REPLACE_KEY_VALUE\\\");\\ncurl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);\\n\\nCURLcode ret = curl_easy_perform(hnd);\", \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"], \"responses\": [{\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"data\\\": [\\n {\\n \\\"eui\\\": \\\"0000000000000000\\\",\\n \\\"status\\\": {\\n \\\"nullObject\\\": true,\\n \\\"array\\\": true,\\n \\\"empty\\\": true,\\n \\\"additionalProp1\\\": {},\\n \\\"additionalProp2\\\": {},\\n \\\"additionalProp3\\\": {}\\n },\\n \\\"lastContact\\\": 1611698756954,\\n \\\"lastPacket\\\": 1611698756954,\\n \\\"name\\\": \\\"Base Station 1\\\",\\n \\\"model\\\": \\\"MutliTech Conduit AP\\\",\\n \\\"ismBandName\\\": \\\"US902-928:Default\\\",\\n \\\"version\\\": \\\"02_04_04\\\",\\n \\\"uptime\\\": 3600,\\n \\\"radius\\\": 10,\\n \\\"height\\\": 30,\\n \\\"alertLevel\\\": \\\"Alert Level 1\\\",\\n \\\"deltaTime\\\": 41,\\n \\\"address\\\": \\\"string\\\",\\n \\\"location\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsLocation\\\": {\\n \\\"latitude\\\": 43.083412,\\n \\\"longitude\\\": -70.77599\\n },\\n \\\"gpsAltitude\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"clearedIds\\\": [\\n 0\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\"\\n}\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgs\\\": [\\n {\\n \\\"id\\\": 0,\\n \\\"getfCntDown\\\": 0,\\n \\\"state\\\": \\\"Not Sent,Sent,TimedOut-Sent,TimedOut-NotSent,Response Received\\\",\\n \\\"pdu\\\": [\\n \\\"string\\\"\\n ],\\n \\\"encrypted\\\": true,\\n \\\"confirmed\\\": true,\\n \\\"getfPort\\\": 0,\\n \\\"sendTime\\\": 0\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"state\\\": \\\"DONE\\\",\\n \\\"pctDone\\\": 50,\\n \\\"result\\\": \\\"{ 'statusUrl': 'https://api.senetco.io/rest/integration/device/status?reqId=DevMgmtJobReq:00000000000100E0' }\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"MCastXferJobReq:00250C0000010001\\\",\\n \\\"responseMsg\\\": \\\"MCastXferJobReq job starting, cancelled, etc.\\\",\\n \\\"statusCode\\\": 200\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"jobId\\\": \\\"string\\\",\\n \\\"serverId\\\": \\\"string\\\",\\n \\\"state\\\": \\\"string\\\",\\n \\\"startTime\\\": 0,\\n \\\"endTime\\\": 0,\\n \\\"removeTime\\\": 0,\\n \\\"pctDone\\\": 0,\\n \\\"username\\\": \\\"string\\\",\\n \\\"result\\\": \\\"string\\\",\\n \\\"acctId\\\": 0,\\n \\\"operId\\\": 0,\\n \\\"jobLauncherClsNm\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.458Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.461Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.464Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.470Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"mcAddr\\\": [\\n \\\"string\\\"\\n ],\\n \\\"minFCnt\\\": 0,\\n \\\"maxFCnt\\\": 0,\\n \\\"appEui\\\": [\\n \\\"string\\\"\\n ],\\n \\\"devClass\\\": \\\"string\\\",\\n \\\"startTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"freq\\\": 0,\\n \\\"dr\\\": 0,\\n \\\"periodicity\\\": 0,\\n \\\"mcastType\\\": \\\"string\\\",\\n \\\"durationSecs\\\": 0,\\n \\\"downPkts\\\": 0,\\n \\\"downBytes\\\": 0,\\n \\\"bstns\\\": [\\n \\\"string\\\"\\n ],\\n \\\"endTime\\\": \\\"2025-04-25T12:48:38.474Z\\\",\\n \\\"ismBandName\\\": \\\"string\\\",\\n \\\"contractId\\\": 0,\\n \\\"devs\\\": [\\n {\\n \\\"devEui\\\": \\\"string\\\",\\n \\\"groupId\\\": 0,\\n \\\"state\\\": \\\"string\\\",\\n \\\"msg\\\": \\\"string\\\"\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"message\\\": \\\"Success!\\\",\\n \\\"msgId\\\": \\\"string\\\"\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}, {\"code\": \"200\", \"example\": \"{\\n \\\"numberOfDevices\\\": 10,\\n \\\"numberOfActiveDevices\\\": 10,\\n \\\"numberOfReportingDevices\\\": 10,\\n \\\"numberOfDevicesEvaluated\\\": 10,\\n \\\"totalRegistrations\\\": 0,\\n \\\"totalActivations\\\": 10,\\n \\\"totalDeactivations\\\": 0,\\n \\\"totalUpPackets\\\": 100000,\\n \\\"totalDownPackets\\\": 100,\\n \\\"totalSecuritySession\\\": 1,\\n \\\"totalLocalUpMsg\\\": 100000,\\n \\\"totalForeignUpMsg\\\": 0,\\n \\\"totalLocalDownMsg\\\": 0,\\n \\\"totalForeignDownMsg\\\": 0,\\n \\\"billableFeatures\\\": [\\n {\\n \\\"simpleLocation\\\": true\\n },\\n {\\n \\\"completeRfMetadata\\\": true\\n }\\n ],\\n \\\"contracts\\\": [\\n {\\n \\\"contractId\\\": -1,\\n \\\"deviceCount\\\": 8\\n },\\n {\\n \\\"contractId\\\": 0,\\n \\\"deviceCount\\\": 1\\n }\\n ]\\n}\"}, {\"code\": \"400\", \"example\": \"\"}, {\"code\": \"403\", \"example\": \"\"}, {\"code\": \"404\", \"example\": \"\"}]}"
907 },
908 {
909 "platform": "Everynet",
910 "type": "docs",
911 "source": "https://ns.docs.everynet.io/",
912 "content": "Introduction\nIntroduction\nThe Everynet platform is designed to operate on a massive scale and separates Network Server (NS) functionality from Radio Access Network (RAN) management.\nAll platform features are fully extensible via API, as described on this site, and convenient management portals are available based on those APIs.\nwhere.eu.specifies a shared European instance. Other regions (e.g. us) and other private instances are available.\nTo be able to conveniently manage very high numbers of objects (devices, filters, connections, users, keys), the portals and underlying servers include extensive search and filter capabilities. Filters provide a powerful mechanism for routing data between sets of devices and connections to external application servers. By filtering tags, EUIs, gateways and message types, it is possible to establish complex relationships between devices and applications, even share data from one device to multiple applications.\nThe Everynet Network Server (NS) Ñontains two different interfaces: RESTful and WebSocket-based. These interfaces are designed for the following purposes:\nresults matching \"\"\nNo results matching \"\""
913 },
914 {
915 "platform": "Everynet",
916 "type": "docs",
917 "source": "https://ns.docs.everynet.io/quickstart/",
918 "content": "Quick Start\nQuick Start\nInvitation to the NS\nNew users of the Everynet Network Server (NS) platform will receive an email invitation to the portal. Upon first entry, the portal will ask the user to set a password and log in.\nThe NS is arranged based on 'Organizations' and the scope of view is limited to objects belonging to that organization. Everynet will initiate the first user within a new organization, and they will subsequently be able to add and manage other users via the portal.\nPortal Layout\nThe Everynet NS and portal are designed to scale to many millions of devices and users, which would quickly become cumbersome to navigate via simple groups and lists. To overcome this, all objects on the server can be assigned multiple tags to ease searching.\nThe scope of view for any user is defined by their organization. The organization contains all their tags, devices, filters, connections, users and keys.\nFilters provide a powerful mechanism to route data between sets of devices and connections to external application servers. By filtering tags, EUIs, gateways and message types, it is possible to establish complex relationships between devices and applications, even share data from one device to multiple applications.\nMain View\nThe default view for the Everynet NS portal is shown below.\nThe search field provides a convenient mechanism to quickly discover groups of devices within the server. In the example shown here, a selection of devices that have been tagged with 'test' have been listed on the left side of the screen. Key information for each device is visible in the list of tiles.\nDevices can be searched using:\nWhen a device is selected (in the example show the top device is highlighted), its full details can be viewed and the attributes modified in the right-side panel of the screen. Each of these attributes maps to developer APIs.\nCreate a Device\nUnder the 'Devices' view, click theicon.\nThe necessary EUIs, addresses and keys can be populated dependent on the choices for activation type and whether the payload encryption is terminated at the network or application server. User-supplied EUI/addr/keys values may be entered, or auto-populated.\nMultiple tags can be assigned to each device to ease subsequent searches.\nCreate a Filter\nUnder the 'Filter' view, click theicon.\nFilters provide a mechanism to form groups of devices. These groups can be formed by filtering tags, EUIs or by gateway and message type.\nCreate a Connection\nUnder the 'Connection' view, click theicon.\nThe Everynet NS provides device connectivity, but end-to-end solutions rely on integrations to external 3rd party application servers to make use of the delivered data. This feature provides the 'Connections' to those external integrations.\nMany external application servers make use of industry standard HTTP or MQTT integrations, and the list of specific Connections (MyDevices, PubNub etc) will continue to grow.\nAs each Connection has unique properties, the list of parameters will change depending on the selection.\nresults matching \"\"\nNo results matching \"\""
919 },
920 {
921 "platform": "Everynet",
922 "type": "docs",
923 "source": "https://ns.docs.everynet.io/management/",
924 "content": "Management API\nManagement API\nMotivation\nThe Management API is a RESTful interface designed to provision devices to the network server. Besides provisioning devices, it allows to filter message streams coming fromData APIby creating Filters. It also allows to create and connect Adapters to 3rd party IoT services: PubNub, AWS MQTT, MyDevices, MQTT, Azure IoT Hub, etc.\nEndpoint URLs\nEverynet is operating in private networks and in different regions, including general EU and US regions. Each region uses its own endpoint URL.\nCustom regions and private networks can get endpoint URLs from Everynet support.\nThe \"Try it out section\" is currently under construction and inoperable.\nFeatures\nThe Management API expose the following endpoints:\nFilters- CRUD operations for the filters. Filters are designed to filter device message streams by applications, gateways, tags, devices and message types. All parameters are comma separated strings. You should do the following to use a filter:\nCreate a filter using Management API or GUI and memorizefilter_id.\nEstablish a Data API connection using a query string with parameterfilterand valuefilter_id, wherefilter_idis a filter identifier memorized on the first step.\nConnections- CRUD operation for the Connections between the NS and MQTTs or HTTPs server.\nExamples\nresults matching \"\"\nNo results matching \"\""
925 },
926 {
927 "platform": "Everynet",
928 "type": "docs",
929 "source": "https://ns.docs.everynet.io/management/users.html",
930 "content": "Users\nresults matching \"\"\nNo results matching \"\""
931 },
932 {
933 "platform": "Everynet",
934 "type": "docs",
935 "source": "https://ns.docs.everynet.io/management/keys.html",
936 "content": "Keys\nresults matching \"\"\nNo results matching \"\""
937 },
938 {
939 "platform": "Everynet",
940 "type": "docs",
941 "source": "https://ns.docs.everynet.io/management/devices.html",
942 "content": "Devices\nresults matching \"\"\nNo results matching \"\""
943 },
944 {
945 "platform": "Everynet",
946 "type": "docs",
947 "source": "https://ns.docs.everynet.io/management/bands.html",
948 "content": "Bands\nresults matching \"\"\nNo results matching \"\""
949 },
950 {
951 "platform": "Everynet",
952 "type": "docs",
953 "source": "https://ns.docs.everynet.io/management/filters.html",
954 "content": "Filters\nresults matching \"\"\nNo results matching \"\""
955 },
956 {
957 "platform": "Everynet",
958 "type": "docs",
959 "source": "https://ns.docs.everynet.io/management/connections.html",
960 "content": "Connections\nresults matching \"\"\nNo results matching \"\""
961 },
962 {
963 "platform": "Everynet",
964 "type": "docs",
965 "source": "https://ns.docs.everynet.io/data-api/",
966 "content": "Data API\nData API\nMotivation\nThe Data API is a bidirectional streaming interface based on WebSockets and designed for message exchange between the Network Server (NS) and the Application Server (AS) in real-time mode. All LoRaWAN specific operations like OTAA activation are also perfomed using this interface.\nThe Data API is designed as a real-time interface and does not provide any persistent message storage, device state storage and so on. In other words, it is a pure streaming interface between the AS and the NS.\nThe Data API is WebSocket based, which allows for developing serverless applications and is widely used in different programming languages.\nEndpoint URLs\nEverynet is operating in private networks and in different regions, including general EU and US regions. Each region uses it's own endpoint URL.\nCustom regions and private networks can get endpoint URLs from Everynet support.\nServer locations\nLoRaWAN is a synchronous and real-time communication protocol. It means that the overall time of message processing is limited by a default value of one second. It includes all ping times, processing in the NS and the AS and so on. Unfortunately, downlink buffering on the NS side opens a huge security flaw in the protocol and this is the reason why Everynet is not buffering downlink messages. This leads to a situation when the ping time between the AS and the NS becomes critical. Please make sure that your AS is located in the same region as the NS.\nFeatures\nThe Data API interface provides the following features:\nGetting started\nUse this URL to connect to Data API:wss://ns.us.everynet.io/api/v1.0/data?access_token=9ec85978f3fa1ab6f953406269f69a95\nUsingwscatyou can connect to the Data API stream:\nwscat -c \"wss://ns.eu.everynet.io/api/v1.0/data?access_token=9ec85978f3fa1ab6f953406269f69a95\"\nPROFIT!!!111\nresults matching \"\"\nNo results matching \"\""
967 },
968 {
969 "platform": "Everynet",
970 "type": "docs",
971 "source": "https://ns.docs.everynet.io/data-api/connection.html",
972 "content": "Connection\nConnection\nConnection to the Data API is performed through WebSocket.\nPlease note that the Websocket protocol implements so called PING/PONG messages to keep Websockets alive (RFC6455), even behind proxies, firewalls and load-balancers. The network server sends a PONG message to the client every 25 seconds. This message does not require a response. Receipt of this message indicates that the connection is active. To check the connection, the client can send a PING message. In response, the NS sends a PONG message.\nIt is possible to specify the following parameters in the query string of the request:\ntypes- tells the NS to filter messages according to a provided list of message types. Accepts a comma separated list of message types. For example, if it is necessary to receive onlyuplinkandjoin_requestmessages, you should use:types=uplink,join_request. The default value is:types=uplink, downlink, downlink_request, join_request, status_response.\nRead more about message typeshere.\ngateways- tells the NS that you want to receive messages if they are received only by a closed list of gateways. Accepts a comma separated list of gateway identifiers. By default, this option is disabled (accepts data from any gateway).\nAll described parameters are passed through the connectionquery string.The parameterfilterand parameterstypes, gateways, applications, tags and devicesare mutually exclusive. It means that you should specify or filter or any of the other parameters, but not together.\nAll filtering is performed on the NS side.\nHistory retrieval\nThis functionality is mainly designed to handle reconnections and not to lose data in between.\nThe storage period for data is15 minutes.If you need to access older messages please useHistoryAPI.\nUpon connection, you can retrieve old messages you may have missed.To do that, you have to specifyfrom_unixtimeand/orlast_messagesparameters.\nAll the retrieved messages will come with a flagmeta.history = true.\nWe do not want to disturb your current real-time traffic and communication, so all historical messages will come in an asynchronous manner.\nYou may receive current stream messages between historical ones. It helps keep latency-sensitive traffic up to date.\nExample of reconnection with history retrieval\nThe best way to use the history feature is to store themeta.timeof the last received message and later use that unixtime on the reconnect in thefrom_unixtimeparameter.\nHowever, you have to keep in mind that it may request quite a lot messages. To limit the amount, use thelast_messagesparameter.\nExamples\nConnect to the Data API without any filtering:\nConnect to the Data API and get messages only from a device with dev_eui=ef7bc2134bfa6ab0\nresults matching \"\"\nNo results matching \"\""
973 },
974 {
975 "platform": "Everynet",
976 "type": "docs",
977 "source": "https://ns.docs.everynet.io/data-api/messages-and-types/",
978 "content": "Messages\nMessages\nOnce you are connected to the Data API, you have the ability to receive and send different messages: uplink messages from the device, debug messages, and so on...\nAll messages that are received or transmitted through the Data API interface are JSON objects with the following format:\nTypes\nEach message contains atypefield that is included to divide messages by it's functionality: uplinks, downlinks, join, errors.\nEach message type has a correspondingparamsstructure.\nFor a better understanding, you could divide messages into two groups:\nHere is a list of message types:\nMetadata\nEach message contains the following metadata structure (this structure is common for all message types):\nBidirectionals messages\nThe Data API supports bidirectional messaging using the request-response model.For example messages likedownlink_request,downlink_responseare used to get downlink data from the AS and send it to the device.\nHere is a diagram that describes a message flow between the NS and the AS to send a downlink message to a device:\nIn other words the sequence is the following:\nParams\nThe fieldparamsis specific for each type of message and described in corresponding section dedicated to the message type.\nresults matching \"\"\nNo results matching \"\""
979 },
980 {
981 "platform": "Everynet",
982 "type": "docs",
983 "source": "https://ns.docs.everynet.io/data-api/messages-and-types/uplink-message.html",
984 "content": "Uplink\nUplink\nUplink - these are messages received from end devices.\nThe NS is capable of optionally adding the following additional parameters to the uplink messages:\nradio - an object that contains information about RF properties like RSSI, SNR and so on...You should useradio = 1parameter during connection procedure in order to receive this data from the NS.\nFor example:\nmac_commands - a list of MAC commands that was received in this uplink message.Please use thelora = 1parameter in a query string in order to receive this information from the NS.\nFor example:\nAnother functionality of the NS is the ability to receive or discard duplicate messages.In order to receive all message duplicates, useduplicate=1in query string.\nFor example:\nReview this diagram for a better understanding on how uplink messages work:\nOn this diagram, you can see how uplink messages are delivered to the AS:\nParams\nExample\nThe first exampleshows how to receive an uplink message without radio information.\nLet's use a WebSocket client calledwscat.To connect to the server and start receiving messages, you should run this command (do not forget to use your own access_token):\nwscat -c \"wss://ns.eu.everynet.io/api/v1.0/data?types=uplink&access_token=89058167bcf482071da1a88036ca9aaf\"\nYou should get something like this after your client is connected to the Data API:\nSecond exampleshows how to receive uplink messages with RF details in each message.\nLet's usewscatagain, but you should addradio=1to the query string:\nwscat -c \"wss://ns.eu.everynet.io/api/v1.0/data?types=uplink&access_token=89058167bcf482071da1a88036ca9aaf&radio=1\"\nJust after Data API connection is established, you should start to receive messages like:\nresults matching \"\"\nNo results matching \"\""
985 },
986 {
987 "platform": "Everynet",
988 "type": "docs",
989 "source": "https://ns.docs.everynet.io/data-api/messages-and-types/downlink-request.html",
990 "content": "Downlink Request/Response\nDownlink Request / Downlink Response\nThe Downlink Request is a message that is used by the NS to let the AS know that the NS has an opportunity (TX window) to send downlink message to a certain device. In order to send downlink messages, the AS should generate a response message that will contain the necessary data for the device.\nIn other words, if the AS has anything to send back to the end device, it should senddownlink_responsemessage to the NS.\nYou may ask why do we have such a complicated method of sending downlink messages to the end device and why is the NS an initiator of the downlink message. Why not to use the AS as an initiator and just store this message on the NS side?\nUnfortunately, it is not possible in this case, since the NS does not have access toAppSKeyorAppKeyof the device. Uplink and downlink counters should be encrypted on the client side, which is a major obstacle to implement simplified AS-driven downlinks.\nPlease review this sequence diagram for a better understanding of howdownlink_requestanddownlink_responseworks:\nOn the diagram above, you may see the following actions/events:\nPlease note thatdownlinkmessage could be received by the AS even if it never emitteddownlink_responseto the NS.For example, the NS received confirmed an uplink message and should acknowledge it according to LoRaWAN specification. It means that the NS will send a downlink to the device and a message with typedownlinkwill be transmitted to the AS.\nDownlink Request\nHere, we describe all the**parameters that are included into thedownlink_requestmessage from the NS to the AS.\nParams\nExample\nDownlink Response\nHere, we describe all the parameters that are included into thedownlink_responsemessage from the AS to the NS.\nParams\nExample\nresults matching \"\"\nNo results matching \"\""
991 },
992 {
993 "platform": "Everynet",
994 "type": "docs",
995 "source": "https://ns.docs.everynet.io/data-api/messages-and-types/downlink-message.html",
996 "content": "Downlink\nDownlink\nOnce a downlink message is transmitted to the end device, the NS generates a message withtype=downlinkand sends this message to the AS.\nPlease note the these messages could not be used to actually send downlink messages to end devices. It is generated only to notify the AS that a downlink has been successfully sent by the NS.\nIn order to initiate a downlink message to a device, please read thedownlink_requestsection carefully.\nThe NS allows you to optionally add information about MAC commands to the downlink message: addlora=1parameter to the query string.\nFor example:\nFor a better understanding of the message flow, please refer to this sequence diagram:\nIn other words, the following sequence is taking place:\nParams\nMessage of typedownlinkhas the following fields:\nExample\nresults matching \"\"\nNo results matching \"\""
997 },
998 {
999 "platform": "Everynet",
1000 "type": "docs",
1001 "source": "https://ns.docs.everynet.io/data-api/messages-and-types/join-message.html",
1002 "content": "Join Request/Response\nJoin Request / Join Response\nThis message type is intended to be used for the device OTAA on the AS side. This message is not generated if the AppKey is provided and the AS and the AS could perform a join procedure.\nYou should use these parameters to provision an OTAA device to the network server through the Management API or the GUI:\nFor a better understanding of the data flow for OTAA, let's look through this diagram.\nThe sequence is the following:\nJoin Request\nJoin request - this a JSON object that is transferred from the NS to the AS.\nParams\nJoin request contains the following fields:\nExample\nJoin Response\nJoin accept - this is a join_response message that is transferred from the AS to the NS.\nParams\nA Join response contains the following fields:\nExample\nresults matching \"\"\nNo results matching \"\""
1003 },
1004 {
1005 "platform": "Everynet",
1006 "type": "docs",
1007 "source": "https://ns.docs.everynet.io/data-api/messages-and-types/status-message.html",
1008 "content": "Status Request/Response\nStatus Request / Status Response\nMessages of typesstatus_requestandstatus_responseare intended to be used as information messages about device battery status and RF parameters.\nStatus messages are implementing LoRaWAN MAC-commandDevStatusReq/DevStatusAnsfunctionality.\nTo retrieve device status using DevStatusReq, you should perform the following steps:\nLet's walk through the sequence diagram to understand how the status message flow works:\nThis is what the sequence looks like:\nStatus Request\nStatus request - this is a message of typestatus_request, that was sent from the AS to the NS.\nMetadata\nYou should specify the following fields ofstatus_requestmessage metadata before sending it:\nIt is possible to specify agatewayas an option to ask the NS downlink optimization engine to use a specific gateway to send downlink message. If this gateway is not active, then the request will not be sent.\nParams\nThere are no parameters in this message.\nExample\nStatus Response\nStatus response - this is a message of typestatus_response, that is sent form the NS to the AS.\nParams\nExample\nresults matching \"\"\nNo results matching \"\""
1009 },
1010 {
1011 "platform": "Everynet",
1012 "type": "docs",
1013 "source": "https://ns.docs.everynet.io/data-api/messages-and-types/notify-message.html",
1014 "content": "Downlink Claim\nDownlink Claim\nThis type of message is used in the following two cases: 1. For devices with classC: to immediately send a downlink message to the device. 2. For devices with classA: to schedule a downlink message for the next available time slot.\nMessages of typedownlink_claimallow you to notify the NS about the availability of downlink data on the AS side (the AS is ready to send some device). In other words,downlink_claiminitiates transmission of adownlink_requestmessage from the NS to the AS.\nLet's walk through these sequence diagrams to understand better how thedownlink_claimmessage works:\nFor class A\nThe sequence is as follows:\nFor class C\nThe sequence looks like the following:\nMetadata\nYou should specify the following fields indownlink_claimmetadata in order to emit a message of this type:\nIt is possible to specify agatewayandnetworkas an option to ask the NS downlink optimization engine to use a specific gateway to send downlink messages. If this gateway is not active, then a request will not be sent.\nParams\nParameters list is empty.\nExample\nresults matching \"\"\nNo results matching \"\""
1015 },
1016 {
1017 "platform": "Everynet",
1018 "type": "docs",
1019 "source": "https://ns.docs.everynet.io/data-api/messages-and-types/location-message.html",
1020 "content": "Location\nLocation\nMessages of typelocationare intended to be used as information messages about device geolocation solutions. They are generated in case a new solution is available for a particular device.\nEach solution contains estimated geographical coordinates of the sensor and some specific information\nCurrently supported methods:\nMethod simple:moving\nThis method resolves device positioning based on received uplinks signal quality.\nParams\nSolution object\nExample\nresults matching \"\"\nNo results matching \"\""
1021 },
1022 {
1023 "platform": "Everynet",
1024 "type": "docs",
1025 "source": "https://ns.docs.everynet.io/data-api/messages-and-types/error.html",
1026 "content": "Error\nError\nMessages of typeerrorare intended to notify the AS about critical errors during LoRaWAN message processing.\nThese messages are generated in case the NS was not able to complete LoRaWAN message processing for some reasons: bad MIC, CRC or other...\nOn the diagram below, you can see an example of such an error: the device is trying to perform OTAA using thedev_noncethat was already used before.\nThe sequence in that example looks as follows:\nParams\nExample\nList of Errors\nresults matching \"\"\nNo results matching \"\""
1027 },
1028 {
1029 "platform": "Everynet",
1030 "type": "docs",
1031 "source": "https://ns.docs.everynet.io/data-api/messages-and-types/warning.html",
1032 "content": "Warning\nWarning\nThis message will be generated if the NS experienced some problems during message processing, but still successfully finished processing the steps.\nHere is an example of a situation when no AS responded to NS downlink_request.\nParams\nExample\nList of Warnings\nresults matching \"\"\nNo results matching \"\""
1033 },
1034 {
1035 "platform": "Everynet",
1036 "type": "docs",
1037 "source": "https://ns.docs.everynet.io/data-api/messages-and-types/info.html",
1038 "content": "Info\nInfo\nMessages with theinfotype are auxiliary messages that are designed to provide more information about message processing steps to the AS.\nThis is an example of a successful OTAA process:\nParams\nExample\nList of Info messages\nresults matching \"\"\nNo results matching \"\""
1039 },
1040 {
1041 "platform": "Everynet",
1042 "type": "docs",
1043 "source": "https://ns.docs.everynet.io/history-api/",
1044 "content": "History API [beta]\nHistory API [beta]\nThe History API is designed to provide uplink and downlink packets that an application may miss. The format of the packets is the same as for theDataAPI protocol\nThe History API stores onlyuplinkanddownlinkmessage types. The query parameters are basically the same as for theDataAPI connection. The data may be presented in different formats.\nEndpoints\nEverynet is operating in different regions and private networks. Each region uses its own endpoint URL. Custom regions and private networks can get endpoint URLs from Everynet support.\nFor example, the EU region endpoint is:\nResources\n/api/v1.0/history/data- get DataAPI messages based on a query\nYou can specify either aFilter IDeither a set of parameters.Only one way is allowed at the same time.\nMessages are always sorted by the time they are generated by the NS.\nLimiting the number of messages to X will produce only first X messages.\nYou can specify parametersfrom_idandto_idto specify the exact edges of the messages list. This is useful when you dump messages for the big time interval. Notice that in this case, both messages with idsfrom_idandto_idwill be included.\nIf you specify all the parametersfrom,to,from_id,to_idand the timeframes overlap, the minimum time window will be selected.\nLimitations and retention\nMessages are stored for at least30 days.Messages in the storage appears after30 seconds.Onlyuplinkanddownlinkmessage types available.The maximum limit value is10000messages.\nQuery parameters\nReport formats\nThe Usage API provides data in two formats:\nIn order to specify a format, use an extension in the URL:\nSimple Example\nHuge history dump example\nLet's say that you need all the messages from01-01-2020to01-01-2021.Your messages traffic is20kuplinks a month.\nThe algorithm in this case is the following.\nYou start to retrieve messages with thelimit=1000andfromfield.When you reach the limit, you make another request with the last received message id asfrom_idfield.Upon the next request, your last message will be present as the first message.When the amount of received messages is less than a limit, it means that there are no more messages for that time period available.\nresults matching \"\"\nNo results matching \"\""
1045 },
1046 {
1047 "platform": "Everynet",
1048 "type": "docs",
1049 "source": "https://ns.docs.everynet.io/usage-api/",
1050 "content": "Usage API\nUsage API\nThe Usage API is designed to provide service usage information that could be used by reporting and billing systems. Usage reports provided by the Usage API contain different information regarding an amount of uplink and downlink messages consumed, the amount of API calls produced, etc...\nAll information is grouped and aggregated using time slots and name of the organization.\nEndpoints\nEverynet is operating in different regions and private networks. Each region uses its own endpoint URL. Custom regions and private networks could get endpoint URLs from Everynet support.\nFor example US and EU region endpoints are:\nResources\nAll reports can be produced on an hourly, daily, monthly and quarterly basis. Please refer to the Query Parameters section below.\nQuery parameters\nReport formats\nThe Usage API allows you to generate reports in different data formats: JSON, CSV, TSV. Please use CSV in case you want to use Excel or similar tool for the further analysis.\nCSV (default)\nExample of a report\nTSV\nExample of a report\nJSON\nIn order to get a report in JSON format, use the following endpoints:\nExample of a report\nReports content\nAll results contain rows sorted by (time_slot_start, org, org_plan). Organization names are filled using the the latest values.\nData usage\nManagement usage\nTotal usage\nBasically, it is data + management usage at the same time\nConsumption report\nPer device consumption report\nDevice statistics report\nExamples\nTo get monthly usage for all organizations for 2 months.\nresults matching \"\"\nNo results matching \"\""
1051 },
1052 {
1053 "platform": "Everynet",
1054 "type": "docs",
1055 "source": "https://ns.docs.everynet.io/adapters/",
1056 "content": "Adapters\nAdapters\nAdapter - a bridge between the NS and 3rd party HTTPs and MQTTs servers\nThe current version of the NS contains the following adapters:\nresults matching \"\"\nNo results matching \"\""
1057 },
1058 {
1059 "platform": "Everynet",
1060 "type": "docs",
1061 "source": "https://ns.docs.everynet.io/adapters/http2.html",
1062 "content": "HTTPs\nHTTP\nHTTP connection\nThis connector allows data to be transferred from/to the Everynet Network Server to a specific HTTP server hosted by the user.\nIn order to enable the HTTP adapter, you should create a new Connection at the Everynet Management API or Network Server Interface, select 'HTTP / HTTP Adapter' and use the following arguments:\nURL\nExample:\nhttps://login:password@example.com:1234/messages/{type}/{device}\nField substitution is only applied for parts after the port field (path, params, query, hash)\nIf the field is not present, it will be left as is, eg/messages/{type}/{device}\nList of fields that could be substituted:\nAuthorization\nYou can specify an Authorization header value.\nThis field is mandatory if you are going to send requests TO the Network Server.\nThis value is used for both sides of the request.\nExample:\nIf you specify the field like\nThe requests will contain the header, and expect the same from your application, if it makes requests\nReceiving messages from the Network Server\nThe connector performs two types of HTTP requests to your application:POSTandOPTIONS\nMessages from the NS come asPOSTrequests (the example is provided below)\nA request is considered successful by the connector if the response isHTTP 2xxorHTTP 4xx.\nThe connector has4 secondsto perform the connection to your application (including SSL handshake), and then1 secondto receive a response. The request should be received within these timeouts to be considered successful.\nRespond as soon as you can. Avoid actually processing and reacting to events within the same process. Implement a queue to handle inbound events after they are received.\nThe connector supports keep-alive connections and maintain up to10 parallel connections.\nSend messages to the Network Server\nIf your response isHTTP 2xxresponse mime type isapplication/jsonand contains validJSON, then the payload will be forwarded to the NS.\nIf your response isHTTP 4xx, then the response body is ignored.\nIf your response isHTTP 5xxthen the request is treated as failed.\nRequest error handling and retries\nYour application may respond with aHTTP 3xxand we will follow up with two redirects, until you provide aHTTP 2xxorHTTP 4xxsuccess code.\nIf your request is failed, we will retry it2 times, increasing the interval between them.\nEach request comes with custom headers set to support retries logic\nRetry-Number: present if the request is a retry and contains the retry sequence number.\nA request is treated as failed if it fails all retries. In this case, the last error will be stored to the connection logs.\nThere is an error rate counter inside, monitoring the last600 secondsor10000 requests. That counter includes bothPOSTandOPTIONS.\nIf you have5%or more failed requests to you application, then your connection will be temporarily disabled for60 seconds.\nThe connections that have a rate of less than100 requestsper600 secondswill not be disabled.\nWorking cycle\nAfter connection is initialized or being disabled, the connector tries to make a health check of your application using anOPTIONSrequest.\nIf the first request is a success, the connection is treated as open and the traffic starts to flow.\nIf you have no requests from the NS for10 seconds, theOPTIONScheck request will be sent.\nIf your error rate is high enough to fail, the connection will be temporary disabled, and all tcp sockets to your application will be closed.\nThe connection working cycle starts from the beginning once the disabling timeout expired.\nRequests from the application\nThe URL for the requests\nYou can send the requests to the Network Server with HTTP requests to that URL.\nAll rules applied to this request are similar to the response of your application, but you MUST specify the Authorization header (please refer to it's section).\nYou can specify an Authorization header value.\nExamples of usage\nConnection check\nIn order to check if your server is available or not, the connector will make a check.\nPeriodically, it will send the OPTIONS request to your application, which you must reply with some proper HTTP response.\nExample:\nSimple flowuplink,downlink_request\nWhat this example is about:\nWhat you should do:\nIf your application responded to that, the connector starts to send messages to your application.\nExample of anuplinkmessage:\nExample of adownlink_requestmessage and adownlink_responsereply\nClass Cdownlink_claim\nYou can also send this type of message as a response to your application.\n1-3. Repeat the same steps for Simple flow example 4. If you want to send adownlink_claimmessage, you have to set theauthorizationparameter in the connection. It will be used to check requests from your application to the connector for security verification.\nFor example\nresults matching \"\"\nNo results matching \"\""
1063 },
1064 {
1065 "platform": "Everynet",
1066 "type": "docs",
1067 "source": "https://ns.docs.everynet.io/adapters/mqtt.html",
1068 "content": "MQTTs\nMQTT\nMQTT connection\nThis connector allows you to connect a Network Server to your application using the MQTT protocol.\nFor message types, please refer to the corresponding section of Data API messages.\nList of schemes allowed to be used in the URI field:\nThe MQTTuserandpasswordfields are optional, but if present, they should be URLEncoded and passed via basic auth URI parameters.\nmqtts://username:password@example.com:1234\nList of fields could be substituted intopic_upfield. Example:lora/{type}/{device}.\nQoS\nAll messages are sent using MQTT QoS = 1\nIt means, that your broker MUST acknowledge withPUBACKall of the messages.\nThe timeout for the one awaiting message is1 second\nThe maximum awaiting messages is100 messages\nReconnection\nIf the connection to the broker dropped, the connector is trying to reconnect to it. The timeout for that is the following. It starts with0.1sand doubles every following fail, the maximum timeout is60s.\nMissed messages\nDuring the reconnect, the connector requests old messages from the NS, since the time connection is dropped.\nAdapter Working Cycle\nOnce the connection to the MQTT broker is established, the connector will start to PUBLISH data to the generatedtopic_up.\nIf thetopic_downis provided, the connector will subscribe to it right after successful connection.\nPublishing messages\nFor the format of the messages from the Network server, please refer to the corresponding section of Data API.\nSubscribing for messages\nFor the format of the messages to the Network server please, refer to the corresponding section of Data API.\nYou need to send a properData APIJSONmessage.\nIf your messages is notJSONit will be silently discarded.\nExample of usage\nSimple flowuplink,downlink_request\nWhat this example is about:\nWhat you should do:\nCreate an MQTT connection with the following\nURI=mqtt://example.com\nSubscribe topic=/downstream\nAfter creation, the connector connects to your broker and starts to send messages.\nExample of anuplinkmessage:\nExample of adownlink_requestmessage and adownlink_responsemessage reply\nClass Cdownlink_claim\nTo send a class C downlink message, you need to send adownlink_claimmessage\nHow to configure with Amazon AWS IoT\nThere is only one successful way to connect to the AWS IOT via MQTT.\nThe process is quite complex, please read those docs carefully.\nThere are general documentation links\nhttps://docs.aws.amazon.com/iot/latest/developerguide/protocols.htmlhttps://docs.aws.amazon.com/iot/latest/developerguide/custom-authentication.htmlhttps://docs.aws.amazon.com/iot/latest/developerguide/iot-policies.html\nTo implement theCustom Authorizer, you should create aLambdafunction that basically returns an AWS policy for your connection as well as some other meta parameters.\nThe authentication could be done using an MQTTuserandpasswordsfields, as well asHTTP query. Note the usage ofMQTTuserfield with query parameters.https://docs.aws.amazon.com/iot/latest/developerguide/custom-auth.html#custom-auth-mqtt\nThe procedure for the creation of anAuthorizerby AWS docs. Do not forget to set the authorizer as default or set it via params specifically.https://docs.aws.amazon.com/iot/latest/developerguide/config-custom-auth.html\nThe policies that are returned by theAuthorizercould be very complex, including special permission forAWS IoT Things,MQTT Client IdorMQTT Topics.https://docs.aws.amazon.com/iot/latest/developerguide/iot-action-resources.htmlhttps://docs.aws.amazon.com/iot/latest/developerguide/pub-sub-policy.html\nIt is important to verify the correctness of theAuthorizerlogichttps://docs.aws.amazon.com/iot/latest/developerguide/config-custom-auth.html#custom-auth-testing\nresults matching \"\"\nNo results matching \"\""
1069 },
1070 {
1071 "platform": "Everynet",
1072 "type": "docs",
1073 "source": "https://ns.docs.everynet.io/examples/",
1074 "content": "Examples\nExamples\nHere you can find application server examples implemented for different APIs:\nhttps://github.com/everynet/app.example\nresults matching \"\"\nNo results matching \"\""
1075 },
1076 {
1077 "platform": "Everynet",
1078 "type": "docs",
1079 "source": "https://ns.docs.everynet.io/channel_plans/",
1080 "content": "Channel plans\nChannel plans\nEverynet specific region parameters notes and examples.\nresults matching \"\"\nNo results matching \"\""
1081 },
1082 {
1083 "platform": "Everynet",
1084 "type": "docs",
1085 "source": "https://ns.docs.everynet.io/channel_plans/AS920-923.html",
1086 "content": "AS923-2\nAS923-2\nAS923-2 Everynet specifics.\nChannels 0 and 1 are fixed and it's mandatory to be implemented on the end-device. Other channels configured by network server using MAC commands during integration stage (after join for OTAA or first uplink for ABP).\nUplink channels\nBy default, the RX1 receive window uses the same channel as the preceding uplink.\nRX1 timeout = 1s\nRX1 datarate offset = 0\nThe RX2 receive window uses a fixed frequency and data rate. The default parameters are:\n921.4 MHz / DR2 (SF10/125KHz)\nDatarates\nExamples\nThere are changes in common files like LoRaMac.h, Region.c, CMake. Check all project changes in theStackforceLoRaWAN stack implementation modified by the Everynet.\nRegionAS923-2.c\nRegionAS923-2.h\nresults matching \"\"\nNo results matching \"\""
1087 },
1088 {
1089 "platform": "Everynet",
1090 "type": "docs",
1091 "source": "https://ns.docs.everynet.io/channel_plans/LA915A.html",
1092 "content": "LA915\nLA915A\nEverynet impmlementation of AU915-928 channel plan for Brazil.\nFirst 8 channels utilized.\nChannelsDefaultMask[0] = 0xFF;\nUplink channels.\nDownlink channels.\nDownlink frequency actually not written in sources, but computed on RX1 window setup as follow:\n923300000 + ( uplink_channel_number % 8 ) * 600000\nRX2 window channel is fixed:\nFrequency: 923.3 Datarate: 8\nReceive delay for RX1 window: 5sec\nReceive delay for RX2 window: 6sec\nDefault uplink dwell time: 0\nDefault downlink dwell time: 0\nDatarates\nExamples\nRegionLA915.c\nRegionLA915.h\nThere are changes in common files like LoRaMac.h, Region.c, CMake. Check all project changes in theStackforceLoRaWAN stack implementation modified by the Everynet.\nresults matching \"\"\nNo results matching \"\""
1093 },
1094 {
1095 "platform": "Everynet",
1096 "type": "docs",
1097 "source": "https://ns.docs.everynet.io/channel_plans/Stackforce.html",
1098 "content": "Stackforce\nStackforce\nSemtech\\Stackforce LoRaWAN stack implementation modified by the Everynet - add AS923-2(Indonesian) and LA915(Brazilian) channel plans.\nBased on master branch commit hash: e33839f4b650e951a3aa2068315bc7bc5a3607a8\nLoRaMac-node_Everynet_modified.zip\nSwitch to branch everynet to use modifications.\nTested with NUCLEO-L073 (LA) and B-L072Z-LRWAN1(AS) boards.\nToolkit: CMake (3.16.0)\nToolchain: GCC for arm-none-eabi 8.3.1\nIDE: VSCode (1.42.1)\nOS: Windows_NT x64\nHow to build\nIssues\nresults matching \"\"\nNo results matching \"\""
1099 },
1100 {
1101 "platform": "Everynet",
1102 "type": "api",
1103 "source": "https://ns.docs.everynet.io/management/users.html",
1104 "content": "{\"url\": \"https://ns.docs.everynet.io/management/users.html\", \"method\": \"POST\", \"path\": \"/users\", \"summary\": \"Add user to network server\", \"parameters\": [], \"responses\": [{\"code\": \"201\", \"description\": \"Example Value\\nModel\\n{}\", \"example\": \"{}\"}]}"
1105 },
1106 {
1107 "platform": "Everynet",
1108 "type": "api",
1109 "source": "https://ns.docs.everynet.io/management/users.html",
1110 "content": "{\"url\": \"https://ns.docs.everynet.io/management/users.html\", \"method\": \"GET\", \"path\": \"/users\", \"summary\": \"Get list of users from network server\", \"parameters\": [], \"responses\": [{\"code\": \"200\", \"description\": \"Example Value\\nModel\\n{\\n \\\"total\\\": 0,\\n \\\"limit\\\": 0,\\n \\\"offset\\\": 0,\\n \\\"users\\\": {\\n \\\"name\\\": \\\"John Doe\\\",\\n \\\"email\\\": \\\"john.doe@example.com\\\",\\n \\\"permissions\\\": {\\n \\\"devices\\\": {\\n \\\"*\\\": [\\n \\\"create\\\",\\n \\\"read\\\"\\n ]\\n },\\n \\\"gateways\\\": {\\n \\\"*\\\": []\\n },\\n \\\"filters\\\": {\\n \\\"*\\\": []\\n },\\n \\\"users\\\": {\\n \\\"*\\\": [\\n \\\"update\\\",\\n \\\"create\\\",\\n \\\"read\\\"\\n ]\\n },\\n \\\"keys\\\": {\\n \\\"*\\\": [\\n \\\"read\\\"\\n ]\\n },\\n \\\"applications\\\": {\\n \\\"*\\\": []\\n },\\n \\\"connections\\\": {\\n \\\"*\\\": []\\n }\\n }\\n }\\n}\", \"example\": \"{\\n \\\"total\\\": 0,\\n \\\"limit\\\": 0,\\n \\\"offset\\\": 0,\\n \\\"users\\\": {\\n \\\"name\\\": \\\"John Doe\\\",\\n \\\"email\\\": \\\"john.doe@example.com\\\",\\n \\\"permissions\\\": {\\n \\\"devices\\\": {\\n \\\"*\\\": [\\n \\\"create\\\",\\n \\\"read\\\"\\n ]\\n },\\n \\\"gateways\\\": {\\n \\\"*\\\": []\\n },\\n \\\"filters\\\": {\\n \\\"*\\\": []\\n },\\n \\\"users\\\": {\\n \\\"*\\\": [\\n \\\"update\\\",\\n \\\"create\\\",\\n \\\"read\\\"\\n ]\\n },\\n \\\"keys\\\": {\\n \\\"*\\\": [\\n \\\"read\\\"\\n ]\\n },\\n \\\"applications\\\": {\\n \\\"*\\\": []\\n },\\n \\\"connections\\\": {\\n \\\"*\\\": []\\n }\\n }\\n }\\n}\"}]}"
1111 },
1112 {
1113 "platform": "Everynet",
1114 "type": "api",
1115 "source": "https://ns.docs.everynet.io/management/users.html",
1116 "content": "{\"url\": \"https://ns.docs.everynet.io/management/users.html\", \"method\": \"PATCH\", \"path\": \"/users/{id}\", \"summary\": \"Update user data\", \"parameters\": [], \"responses\": [{\"code\": \"200\", \"description\": \"Example Value\\nModel\\n{\\n \\\"user\\\": {\\n \\\"name\\\": \\\"John Doe\\\",\\n \\\"email\\\": \\\"john.doe@example.com\\\",\\n \\\"permissions\\\": {\\n \\\"devices\\\": {\\n \\\"*\\\": [\\n \\\"create\\\",\\n \\\"read\\\"\\n ]\\n },\\n \\\"gateways\\\": {\\n \\\"*\\\": []\\n },\\n \\\"filters\\\": {\\n \\\"*\\\": []\\n },\\n \\\"users\\\": {\\n \\\"*\\\": [\\n \\\"update\\\",\\n \\\"create\\\",\\n \\\"read\\\"\\n ]\\n },\\n \\\"keys\\\": {\\n \\\"*\\\": [\\n \\\"read\\\"\\n ]\\n },\\n \\\"applications\\\": {\\n \\\"*\\\": []\\n },\\n \\\"connections\\\": {\\n \\\"*\\\": []\\n }\\n }\\n }\\n}\", \"example\": \"{\\n \\\"user\\\": {\\n \\\"name\\\": \\\"John Doe\\\",\\n \\\"email\\\": \\\"john.doe@example.com\\\",\\n \\\"permissions\\\": {\\n \\\"devices\\\": {\\n \\\"*\\\": [\\n \\\"create\\\",\\n \\\"read\\\"\\n ]\\n },\\n \\\"gateways\\\": {\\n \\\"*\\\": []\\n },\\n \\\"filters\\\": {\\n \\\"*\\\": []\\n },\\n \\\"users\\\": {\\n \\\"*\\\": [\\n \\\"update\\\",\\n \\\"create\\\",\\n \\\"read\\\"\\n ]\\n },\\n \\\"keys\\\": {\\n \\\"*\\\": [\\n \\\"read\\\"\\n ]\\n },\\n \\\"applications\\\": {\\n \\\"*\\\": []\\n },\\n \\\"connections\\\": {\\n \\\"*\\\": []\\n }\\n }\\n }\\n}\"}]}"
1117 },
1118 {
1119 "platform": "Everynet",
1120 "type": "api",
1121 "source": "https://ns.docs.everynet.io/management/users.html",
1122 "content": "{\"url\": \"https://ns.docs.everynet.io/management/users.html\", \"method\": \"DELETE\", \"path\": \"/users/{id}\", \"summary\": \"Delete user from network server\", \"parameters\": [], \"responses\": [{\"code\": \"204\", \"description\": \"\", \"example\": null}]}"
1123 },
1124 {
1125 "platform": "Everynet",
1126 "type": "api",
1127 "source": "https://ns.docs.everynet.io/management/users.html",
1128 "content": "{\"url\": \"https://ns.docs.everynet.io/management/users.html\", \"method\": \"POST\", \"path\": \"/auth\", \"summary\": \"Authorization\", \"parameters\": [], \"responses\": [{\"code\": \"200\", \"description\": \"Example Value\\nModel\\n{\\n \\\"token\\\": \\\"string\\\"\\n}\", \"example\": \"{\\n \\\"token\\\": \\\"string\\\"\\n}\"}]}"
1129 },
1130 {
1131 "platform": "Everynet",
1132 "type": "api",
1133 "source": "https://ns.docs.everynet.io/management/users.html",
1134 "content": "{\"url\": \"https://ns.docs.everynet.io/management/users.html\", \"method\": \"GET\", \"path\": \"/logout\", \"summary\": \"Logout\", \"parameters\": [], \"responses\": [{\"code\": \"204\", \"description\": \"\", \"example\": null}]}"
1135 },
1136 {
1137 "platform": "Everynet",
1138 "type": "api",
1139 "source": "https://ns.docs.everynet.io/management/keys.html",
1140 "content": "{\"url\": \"https://ns.docs.everynet.io/management/keys.html\", \"method\": \"POST\", \"path\": \"/keys\", \"summary\": \"Create key\", \"parameters\": [], \"responses\": [{\"code\": \"201\", \"description\": \"Example Value\\nModel\\n{\\n \\\"description\\\": \\\"Key creation example\\\",\\n \\\"permissions\\\": {\\n \\\"applications\\\": {\\n \\\"*\\\": []\\n },\\n \\\"connections\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"delete\\\"\\n ]\\n },\\n \\\"devices\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\",\\n \\\"data\\\"\\n ]\\n },\\n \\\"filters\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"gateways\\\": {\\n \\\"*\\\": []\\n },\\n \\\"keys\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"users\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n }\\n }\\n}\", \"example\": \"{\\n \\\"description\\\": \\\"Key creation example\\\",\\n \\\"permissions\\\": {\\n \\\"applications\\\": {\\n \\\"*\\\": []\\n },\\n \\\"connections\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"delete\\\"\\n ]\\n },\\n \\\"devices\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\",\\n \\\"data\\\"\\n ]\\n },\\n \\\"filters\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"gateways\\\": {\\n \\\"*\\\": []\\n },\\n \\\"keys\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"users\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n }\\n }\\n}\"}]}"
1141 },
1142 {
1143 "platform": "Everynet",
1144 "type": "api",
1145 "source": "https://ns.docs.everynet.io/management/keys.html",
1146 "content": "{\"url\": \"https://ns.docs.everynet.io/management/keys.html\", \"method\": \"GET\", \"path\": \"/keys\", \"summary\": \"Get list of keys\", \"parameters\": [], \"responses\": [{\"code\": \"200\", \"description\": \"Example Value\\nModel\\n{\\n \\\"total\\\": 0,\\n \\\"limit\\\": 0,\\n \\\"offset\\\": 0,\\n \\\"keys\\\": [\\n {\\n \\\"description\\\": \\\"Key creation example\\\",\\n \\\"permissions\\\": {\\n \\\"applications\\\": {\\n \\\"*\\\": []\\n },\\n \\\"connections\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"delete\\\"\\n ]\\n },\\n \\\"devices\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\",\\n \\\"data\\\"\\n ]\\n },\\n \\\"filters\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"gateways\\\": {\\n \\\"*\\\": []\\n },\\n \\\"keys\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"users\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n }\\n }\\n }\\n ]\\n}\", \"example\": \"{\\n \\\"total\\\": 0,\\n \\\"limit\\\": 0,\\n \\\"offset\\\": 0,\\n \\\"keys\\\": [\\n {\\n \\\"description\\\": \\\"Key creation example\\\",\\n \\\"permissions\\\": {\\n \\\"applications\\\": {\\n \\\"*\\\": []\\n },\\n \\\"connections\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"delete\\\"\\n ]\\n },\\n \\\"devices\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\",\\n \\\"data\\\"\\n ]\\n },\\n \\\"filters\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"gateways\\\": {\\n \\\"*\\\": []\\n },\\n \\\"keys\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"users\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n }\\n }\\n }\\n ]\\n}\"}]}"
1147 },
1148 {
1149 "platform": "Everynet",
1150 "type": "api",
1151 "source": "https://ns.docs.everynet.io/management/keys.html",
1152 "content": "{\"url\": \"https://ns.docs.everynet.io/management/keys.html\", \"method\": \"GET\", \"path\": \"/keys/{id}\", \"summary\": \"Retrieve key by key identifier\", \"parameters\": [], \"responses\": [{\"code\": \"200\", \"description\": \"Example Value\\nModel\\n{\\n \\\"key\\\": {\\n \\\"description\\\": \\\"Key creation example\\\",\\n \\\"permissions\\\": {\\n \\\"applications\\\": {\\n \\\"*\\\": []\\n },\\n \\\"connections\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"delete\\\"\\n ]\\n },\\n \\\"devices\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\",\\n \\\"data\\\"\\n ]\\n },\\n \\\"filters\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"gateways\\\": {\\n \\\"*\\\": []\\n },\\n \\\"keys\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"users\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n }\\n }\\n }\\n}\", \"example\": \"{\\n \\\"key\\\": {\\n \\\"description\\\": \\\"Key creation example\\\",\\n \\\"permissions\\\": {\\n \\\"applications\\\": {\\n \\\"*\\\": []\\n },\\n \\\"connections\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"delete\\\"\\n ]\\n },\\n \\\"devices\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\",\\n \\\"data\\\"\\n ]\\n },\\n \\\"filters\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"gateways\\\": {\\n \\\"*\\\": []\\n },\\n \\\"keys\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"users\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n }\\n }\\n }\\n}\"}]}"
1153 },
1154 {
1155 "platform": "Everynet",
1156 "type": "api",
1157 "source": "https://ns.docs.everynet.io/management/keys.html",
1158 "content": "{\"url\": \"https://ns.docs.everynet.io/management/keys.html\", \"method\": \"PATCH\", \"path\": \"/keys/{id}\", \"summary\": \"Update key\", \"parameters\": [], \"responses\": [{\"code\": \"200\", \"description\": \"Example Value\\nModel\\n{\\n \\\"key\\\": {\\n \\\"description\\\": \\\"Key creation example\\\",\\n \\\"permissions\\\": {\\n \\\"applications\\\": {\\n \\\"*\\\": []\\n },\\n \\\"connections\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"delete\\\"\\n ]\\n },\\n \\\"devices\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\",\\n \\\"data\\\"\\n ]\\n },\\n \\\"filters\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"gateways\\\": {\\n \\\"*\\\": []\\n },\\n \\\"keys\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"users\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n }\\n }\\n }\\n}\", \"example\": \"{\\n \\\"key\\\": {\\n \\\"description\\\": \\\"Key creation example\\\",\\n \\\"permissions\\\": {\\n \\\"applications\\\": {\\n \\\"*\\\": []\\n },\\n \\\"connections\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"delete\\\"\\n ]\\n },\\n \\\"devices\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\",\\n \\\"data\\\"\\n ]\\n },\\n \\\"filters\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"gateways\\\": {\\n \\\"*\\\": []\\n },\\n \\\"keys\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n },\\n \\\"users\\\": {\\n \\\"*\\\": [\\n \\\"read\\\",\\n \\\"create\\\",\\n \\\"delete\\\",\\n \\\"update\\\"\\n ]\\n }\\n }\\n }\\n}\"}]}"
1159 },
1160 {
1161 "platform": "Everynet",
1162 "type": "api",
1163 "source": "https://ns.docs.everynet.io/management/keys.html",
1164 "content": "{\"url\": \"https://ns.docs.everynet.io/management/keys.html\", \"method\": \"DELETE\", \"path\": \"/keys/{id}\", \"summary\": \"Delete key\", \"parameters\": [], \"responses\": [{\"code\": \"204\", \"description\": \"\", \"example\": null}]}"
1165 },
1166 {
1167 "platform": "Everynet",
1168 "type": "api",
1169 "source": "https://ns.docs.everynet.io/management/devices.html",
1170 "content": "{\"url\": \"https://ns.docs.everynet.io/management/devices.html\", \"method\": \"POST\", \"path\": \"/devices\", \"summary\": \"Create device\", \"parameters\": [], \"responses\": [{\"code\": \"201\", \"description\": \"Example Value\\nModel\\n{\\n \\\"device\\\": {\\n \\\"dev_eui\\\": \\\"cb105012c80769f7\\\",\\n \\\"app_eui\\\": \\\"d66a26096626ca12\\\",\\n \\\"tags\\\": [],\\n \\\"activation\\\": \\\"ABP\\\",\\n \\\"encryption\\\": \\\"NS\\\",\\n \\\"dev_addr\\\": \\\"6c89893f\\\",\\n \\\"nwkskey\\\": \\\"edf2ff46452491424cf15f0d9a29588f\\\",\\n \\\"appskey\\\": \\\"1c8a76070844d1d7a5e5e29f97f28686\\\",\\n \\\"dev_class\\\": \\\"A\\\",\\n \\\"counters_size\\\": 4,\\n \\\"adr\\\": {\\n \\\"tx_power\\\": null,\\n \\\"datarate\\\": null,\\n \\\"mode\\\": \\\"on\\\"\\n },\\n \\\"band\\\": \\\"EU863-870\\\"\\n }\\n}\", \"example\": \"{\\n \\\"device\\\": {\\n \\\"dev_eui\\\": \\\"cb105012c80769f7\\\",\\n \\\"app_eui\\\": \\\"d66a26096626ca12\\\",\\n \\\"tags\\\": [],\\n \\\"activation\\\": \\\"ABP\\\",\\n \\\"encryption\\\": \\\"NS\\\",\\n \\\"dev_addr\\\": \\\"6c89893f\\\",\\n \\\"nwkskey\\\": \\\"edf2ff46452491424cf15f0d9a29588f\\\",\\n \\\"appskey\\\": \\\"1c8a76070844d1d7a5e5e29f97f28686\\\",\\n \\\"dev_class\\\": \\\"A\\\",\\n \\\"counters_size\\\": 4,\\n \\\"adr\\\": {\\n \\\"tx_power\\\": null,\\n \\\"datarate\\\": null,\\n \\\"mode\\\": \\\"on\\\"\\n },\\n \\\"band\\\": \\\"EU863-870\\\"\\n }\\n}\"}]}"
1171 },
1172 {
1173 "platform": "Everynet",
1174 "type": "api",
1175 "source": "https://ns.docs.everynet.io/management/devices.html",
1176 "content": "{\"url\": \"https://ns.docs.everynet.io/management/devices.html\", \"method\": \"GET\", \"path\": \"/devices\", \"summary\": \"List of devices\", \"parameters\": [], \"responses\": [{\"code\": \"200\", \"description\": \"Example Value\\nModel\\n{\\n \\\"total\\\": 0,\\n \\\"limit\\\": 0,\\n \\\"offset\\\": 0,\\n \\\"keys\\\": [\\n {\\n \\\"dev_eui\\\": \\\"cb105012c80769f7\\\",\\n \\\"app_eui\\\": \\\"d66a26096626ca12\\\",\\n \\\"tags\\\": [],\\n \\\"activation\\\": \\\"ABP\\\",\\n \\\"encryption\\\": \\\"NS\\\",\\n \\\"dev_addr\\\": \\\"6c89893f\\\",\\n \\\"nwkskey\\\": \\\"edf2ff46452491424cf15f0d9a29588f\\\",\\n \\\"appskey\\\": \\\"1c8a76070844d1d7a5e5e29f97f28686\\\",\\n \\\"dev_class\\\": \\\"A\\\",\\n \\\"counters_size\\\": 4,\\n \\\"adr\\\": {\\n \\\"tx_power\\\": null,\\n \\\"datarate\\\": null,\\n \\\"mode\\\": \\\"on\\\"\\n },\\n \\\"band\\\": \\\"EU863-870\\\"\\n }\\n ]\\n}\", \"example\": \"{\\n \\\"total\\\": 0,\\n \\\"limit\\\": 0,\\n \\\"offset\\\": 0,\\n \\\"keys\\\": [\\n {\\n \\\"dev_eui\\\": \\\"cb105012c80769f7\\\",\\n \\\"app_eui\\\": \\\"d66a26096626ca12\\\",\\n \\\"tags\\\": [],\\n \\\"activation\\\": \\\"ABP\\\",\\n \\\"encryption\\\": \\\"NS\\\",\\n \\\"dev_addr\\\": \\\"6c89893f\\\",\\n \\\"nwkskey\\\": \\\"edf2ff46452491424cf15f0d9a29588f\\\",\\n \\\"appskey\\\": \\\"1c8a76070844d1d7a5e5e29f97f28686\\\",\\n \\\"dev_class\\\": \\\"A\\\",\\n \\\"counters_size\\\": 4,\\n \\\"adr\\\": {\\n \\\"tx_power\\\": null,\\n \\\"datarate\\\": null,\\n \\\"mode\\\": \\\"on\\\"\\n },\\n \\\"band\\\": \\\"EU863-870\\\"\\n }\\n ]\\n}\"}]}"
1177 },
1178 {
1179 "platform": "Everynet",
1180 "type": "api",
1181 "source": "https://ns.docs.everynet.io/management/devices.html",
1182 "content": "{\"url\": \"https://ns.docs.everynet.io/management/devices.html\", \"method\": \"GET\", \"path\": \"/devices/{dev_eui}\", \"summary\": \"Get device by dev_eui\", \"parameters\": [], \"responses\": [{\"code\": \"200\", \"description\": \"Example Value\\nModel\\n{\\n \\\"device\\\": {\\n \\\"dev_eui\\\": \\\"cb105012c80769f7\\\",\\n \\\"app_eui\\\": \\\"d66a26096626ca12\\\",\\n \\\"tags\\\": [],\\n \\\"activation\\\": \\\"ABP\\\",\\n \\\"encryption\\\": \\\"NS\\\",\\n \\\"dev_addr\\\": \\\"6c89893f\\\",\\n \\\"nwkskey\\\": \\\"edf2ff46452491424cf15f0d9a29588f\\\",\\n \\\"appskey\\\": \\\"1c8a76070844d1d7a5e5e29f97f28686\\\",\\n \\\"dev_class\\\": \\\"A\\\",\\n \\\"counters_size\\\": 4,\\n \\\"adr\\\": {\\n \\\"tx_power\\\": null,\\n \\\"datarate\\\": null,\\n \\\"mode\\\": \\\"on\\\"\\n },\\n \\\"band\\\": \\\"EU863-870\\\"\\n }\\n}\", \"example\": \"{\\n \\\"device\\\": {\\n \\\"dev_eui\\\": \\\"cb105012c80769f7\\\",\\n \\\"app_eui\\\": \\\"d66a26096626ca12\\\",\\n \\\"tags\\\": [],\\n \\\"activation\\\": \\\"ABP\\\",\\n \\\"encryption\\\": \\\"NS\\\",\\n \\\"dev_addr\\\": \\\"6c89893f\\\",\\n \\\"nwkskey\\\": \\\"edf2ff46452491424cf15f0d9a29588f\\\",\\n \\\"appskey\\\": \\\"1c8a76070844d1d7a5e5e29f97f28686\\\",\\n \\\"dev_class\\\": \\\"A\\\",\\n \\\"counters_size\\\": 4,\\n \\\"adr\\\": {\\n \\\"tx_power\\\": null,\\n \\\"datarate\\\": null,\\n \\\"mode\\\": \\\"on\\\"\\n },\\n \\\"band\\\": \\\"EU863-870\\\"\\n }\\n}\"}]}"
1183 },
1184 {
1185 "platform": "Everynet",
1186 "type": "api",
1187 "source": "https://ns.docs.everynet.io/management/devices.html",
1188 "content": "{\"url\": \"https://ns.docs.everynet.io/management/devices.html\", \"method\": \"PATCH\", \"path\": \"/devices/{dev_eui}\", \"summary\": \"Update device\", \"parameters\": [], \"responses\": [{\"code\": \"200\", \"description\": \"Example Value\\nModel\\n{\\n \\\"device\\\": {\\n \\\"dev_eui\\\": \\\"cb105012c80769f7\\\",\\n \\\"app_eui\\\": \\\"d66a26096626ca12\\\",\\n \\\"tags\\\": [],\\n \\\"activation\\\": \\\"ABP\\\",\\n \\\"encryption\\\": \\\"NS\\\",\\n \\\"dev_addr\\\": \\\"6c89893f\\\",\\n \\\"nwkskey\\\": \\\"edf2ff46452491424cf15f0d9a29588f\\\",\\n \\\"appskey\\\": \\\"1c8a76070844d1d7a5e5e29f97f28686\\\",\\n \\\"dev_class\\\": \\\"A\\\",\\n \\\"counters_size\\\": 4,\\n \\\"adr\\\": {\\n \\\"tx_power\\\": null,\\n \\\"datarate\\\": null,\\n \\\"mode\\\": \\\"on\\\"\\n },\\n \\\"band\\\": \\\"EU863-870\\\"\\n }\\n}\", \"example\": \"{\\n \\\"device\\\": {\\n \\\"dev_eui\\\": \\\"cb105012c80769f7\\\",\\n \\\"app_eui\\\": \\\"d66a26096626ca12\\\",\\n \\\"tags\\\": [],\\n \\\"activation\\\": \\\"ABP\\\",\\n \\\"encryption\\\": \\\"NS\\\",\\n \\\"dev_addr\\\": \\\"6c89893f\\\",\\n \\\"nwkskey\\\": \\\"edf2ff46452491424cf15f0d9a29588f\\\",\\n \\\"appskey\\\": \\\"1c8a76070844d1d7a5e5e29f97f28686\\\",\\n \\\"dev_class\\\": \\\"A\\\",\\n \\\"counters_size\\\": 4,\\n \\\"adr\\\": {\\n \\\"tx_power\\\": null,\\n \\\"datarate\\\": null,\\n \\\"mode\\\": \\\"on\\\"\\n },\\n \\\"band\\\": \\\"EU863-870\\\"\\n }\\n}\"}]}"
1189 },
1190 {
1191 "platform": "Everynet",
1192 "type": "api",
1193 "source": "https://ns.docs.everynet.io/management/devices.html",
1194 "content": "{\"url\": \"https://ns.docs.everynet.io/management/devices.html\", \"method\": \"DELETE\", \"path\": \"/devices/{dev_eui}\", \"summary\": \"Delete device\", \"parameters\": [], \"responses\": [{\"code\": \"204\", \"description\": \"\", \"example\": null}]}"
1195 },
1196 {
1197 "platform": "Netmore",
1198 "type": "docs",
1199 "source": "",
1200 "content": "All sensors can be positioned based on which gateways they communicate with. This is not an exact position but rather an indication of approximately where a sensor is located. If the sensor communicates with multiple gateways, the one with the best radio conditions is chosen. "
