Skip to content

POST /api/v3/lightning/devices/{lcuid}/router

Summary

POST /v3/lightning/devices/{lcuid}/router

Description

Store (or upsert) the provisioning record for a lightning device's router.

Tags: lightning

Parameters

Header Parameters

Name Type Required Description Example
Authorization string ✓ Yes Bearer {AuthToken}
Content-Type string ✓ Yes application/json
Accept string ✓ Yes application/json
AppIdV3 string ✓ Yes LCUID-LAP-********-****-****-****-************

Request Body

Required: Yes

Content Type: application/json

Schema

Type: object

Required fields: schema_version, hardware, router, network, wireguard

Properties:

  • schema_version (string) (required): Provisioning payload schema version (e.g. "1.0").
  • hardware (object) (required): Hardware metadata for the router device. Type: object

Properties:

  • model (string): Hardware model identifier (e.g. "RUT241").
  • serial_number (string): Optional serial number.
  • imei (string): Optional cellular modem IMEI.
  • iccid (string): Optional SIM ICCID.
  • eid (string): Optional eSIM EID.
  • inventory_id (string): Optional inventory tracking id.
  • firmware_version (string): Optional firmware version string.

  • router (object) (required): Router-level settings. Type: object

Properties:

  • admin_password (string): Router admin password (will be stored encrypted).
  • hostname (string): Optional router hostname.
  • admin_user (string): Optional admin username (defaults to "admin").
  • site_id (string): Optional explicit site id; defaults to {device_number}-ROUTER.

  • network (object) (required): Network configuration. Type: object

Properties:

  • wg_ip (string): WireGuard peer IP assigned to this router.
  • lan_subnet (string): LAN /30 subnet assigned to this router.
  • carrier (string): Optional cellular carrier name.
  • apn (string): Optional cellular APN.
  • wan_ip_observed (string): Optional observed WAN IP at provisioning time.

  • wireguard (object) (required): WireGuard key material. Type: object

Properties:

  • public_key (string): WireGuard public key.
  • private_key (string): WireGuard private key (will be stored encrypted).

  • sms (object): Optional SMS settings. Type: object

Properties:

  • password (string): Optional SMS password (will be stored encrypted).

  • provisioned_by (string): Optional free-form operator identifier.

Responses

Response: 200

Description: Sample Response

Content Type: application/json

Schema

Type: object

Properties:

  • success (boolean): true
  • lightning_device_router (object) Type: object

Properties:

  • lcuid (string)
  • site_id (string)
  • status (integer)
  • hardware_model (string)
  • serial_number (string)
  • imei (string)
  • iccid (string)
  • eid (string)
  • inventory_id (string)
  • carrier (string)
  • apn (string)
  • firmware_version (string)
  • hostname (string)
  • wg_ip (string)
  • lan_subnet (string)
  • rut_lan_ip (string)
  • device_ip (string)
  • wan_ip_observed (string)
  • wg_public_key (string)
  • admin_user (string)
  • provisioned_at (string)
  • provisioned_by (string)
  • application_id (integer)
  • lightning_device_id (integer)
  • options (object) Type: object

    Properties:

    • _init (array)
    • raw_provisioning_payload (object) Type: object

    Properties:

    • payload (object) Type: object

      Properties:

      • sms (object) Type: object

      Properties:

      • password (string)

      • router (object) Type: object

      Properties:

      • hostname (string)
      • admin_user (string)
      • admin_password (string)

      • network (object) Type: object

      Properties:

      • apn (string)
      • wg_ip (string)
      • carrier (string)
      • lan_subnet (string)

      • hardware (object) Type: object

      Properties:

      • imei (string)
      • iccid (string)
      • model (string)
      • serial_number (string)
      • firmware_version (string)

      • wireguard (object) Type: object

      Properties:

      • public_key (string)
      • private_key (string)

      • provisioned_by (string)

      • schema_version (string)
    • received_at (string)

  • created_at (string)

  • updated_at (string)
Example Response
{
    "success": true,
    "lightning_device_router": {
        "lcuid": "LCUID-LDRT-c151f4f4-8daf-4437-92a5-6fb8177a75dd",
        "site_id": "LDN-47713-ROUTER",
        "status": 1,
        "hardware_model": "RUT241",
        "serial_number": "SN",
        "imei": "IMEI",
        "iccid": "ICCID",
        "eid": null,
        "inventory_id": null,
        "carrier": "TMobile",
        "apn": "fast.t-mobile.com",
        "firmware_version": "RUT2_R_00.07",
        "hostname": "router-x",
        "wg_ip": "10.250.218.111",
        "lan_subnet": "10.140.218.188/30",
        "rut_lan_ip": "10.140.218.189",
        "device_ip": "10.140.218.190",
        "wan_ip_observed": null,
        "wg_public_key": "PUB",
        "admin_user": "admin",
        "provisioned_at": "2026-10-08T21:36:18.000000Z",
        "provisioned_by": "tester@example.com",
        "application_id": 26196,
        "lightning_device_id": 20469,
        "options": {
            "_init": [],
            "raw_provisioning_payload": {
                "payload": {
                    "sms": {
                        "password": "SMSPWD"
                    },
                    "router": {
                        "hostname": "router-x",
                        "admin_user": "admin",
                        "admin_password": "SUPERSECRET"
                    },
                    "network": {
                        "apn": "fast.t-mobile.com",
                        "wg_ip": "10.250.218.111",
                        "carrier": "TMobile",
                        "lan_subnet": "10.140.218.188/30"
                    },
                    "hardware": {
                        "imei": "IMEI",
                        "iccid": "ICCID",
                        "model": "RUT241",
                        "serial_number": "SN",
                        "firmware_version": "RUT2_R_00.07"
                    },
                    "wireguard": {
                        "public_key": "PUB",
                        "private_key": "PRIV"
                    },
                    "provisioned_by": "tester@example.com",
                    "schema_version": "1.0"
                },
                "received_at": "2026-10-08T21:36:19+00:00"
            }
        },
        "created_at": "2026-10-08T21:36:18.000000Z",
        "updated_at": "2026-10-08T21:36:19.000000Z"
    }
}

Example Implementations

Bash (cURL)

curl --request POST \
  --url "https://api.lucit.app/api/v3/lightning/devices/{lcuid}/router" \
  --header "Authorization: Bearer {AuthToken}" \
  --header "Content-Type: application/json" \
  --header "Accept: application/json" \
  --header "AppIdV3: LCUID-LAP-********-****-****-****-************"

JavaScript (Fetch API)

const url = "https://api.lucit.app/api/v3/lightning/devices/{lcuid}/router";

const headers = {
  "Authorization": "Bearer {AuthToken}",
  "Content-Type": "application/json",
  "Accept": "application/json",
  "AppIdV3": "LCUID-LAP-********-****-****-****-************"
};

fetch(url, {
  method: "POST",
  headers: headers
})
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

PHP (Guzzle)

<?php

require_once 'vendor/autoload.php';

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.lucit.app/api/v3/lightning/devices/{lcuid}/router', [
  'headers' => [
    'Authorization' => 'Bearer {AuthToken}',
    'Content-Type' => 'application/json',
    'Accept' => 'application/json',
    'AppIdV3' => 'LCUID-LAP-********-****-****-****-************',
  ]
]);

$body = $response->getBody();
$data = json_decode($body, true);
print_r($data);

Python (Requests)

import requests
import json

url = "https://api.lucit.app/api/v3/lightning/devices/{lcuid}/router"

headers = {
  "Authorization": "Bearer {AuthToken}",
  "Content-Type": "application/json",
  "Accept": "application/json",
  "AppIdV3": "LCUID-LAP-********-****-****-****-************"
}

response = requests.post(url, headers=headers)
print(response.json())

← Back to lightning index | Back to main index