SSmartOLT APIDeveloper referenceOpenAPI
API reference

SmartOLT API

Machine-readable version (OpenAPI, for tools and AI assistants): https://www.smartolt.com/openapi.json


๐Ÿ”ด The API changed. Please read this page again.

Updated October 2026. Check your integration against these changes:

  • ๐Ÿ†• Real-time events. Get ONU status changes, ONU changes, signal changes and PON outages when they occur. Use an event stream (SSE) or a webhook. You do not need to poll the API. See Real-time events below.
  • โšก Asynchronous calls for high-volume actions. Send async=1 to enable or disable ONUs, change CATV or change speed profiles. The request does not wait for the OLT. See Asynchronous calls below.
  • ๐Ÿ“ฆ Bulk actions. One bulk call can contain up to 10,000 ONU IDs with async=1. Do not send one call for each ONU. See Recommended API usage below.
  • ๐Ÿ†• ONU status history. Get how long an ONU was Online, LOS, Power fail or Offline, for up to 365 days. See Get ONU status history by ONU unique external ID.
  • ๐Ÿ†• MAC addresses. Get the MAC addresses behind an ONU, or find the ONU of a MAC address. See Get ONU MAC addresses by ONU unique external ID and Search ONU by MAC address.

โš ๏ธ If your system polls Get all ONUs statuses or Get all ONUs signals, change it to use real-time events.


How to call the API

  • Send each request to https://<your-subdomain>.smartolt.com/api/....
  • Send your API key in the X-Token header.
  • Every response has status. When status is false, read error for the message and error_code for the reason, when it is present.

Limits

API access is a privilege. Use it responsibly.

  • The default budget is 1,000 API calls per hour. For very large installations, we can review and extend the budget if the operational requirements justify it.
  • Asynchronous calls have their own budget, by default 5,000 calls per hour.
  • The default limit is 15 calls per second. If you send more, all your calls are blocked for 10 seconds.
  • Some endpoints have their own hourly limit. The description of the endpoint gives it.
  • When you are over a limit, the API returns HTTP 429 with the error code rate_limit_exceeded and a Retry-After header. Wait that number of seconds before you call again.
  • Each response has X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers. X-RateLimit-Reset is the number of seconds until the budget resets.

If you use the API too much, SmartOLT can limit your calls or revoke your API access.

Do not use the API as a live database. Store the data that you use again in your system, and do not send the same request again and again.

Add a random delay to scheduled requests. For example, do not send a request exactly every 5 minutes at fixed times. Add a small random delay to each call, so that many systems do not call the API at the same time.

Real-time events (new)

Get ONU and PON events when they occur. You do not need to poll the API.

  • Event stream (SSE): your system keeps one connection open, and the events arrive on it.
  • Webhook: SmartOLT sends each batch of events as an HTTPS POST to your URL. Set it up in General > API key > Edit > Webhook.

Event types: onu.status_changed, onu.authorized, onu.updated, onu.deleted, onu.signal_changed, onu.signal_reading, pon.outage_started, pon.outage_ended,onu.unconfigured_detected. See the Real-time events folder.

For high-volume actions, use asynchronous calls. Use them to enable ONUs, disable ONUs, change CATV or change speed profiles on many ONUs. Send async=1 with the request. SmartOLT checks the request, puts the work in a queue and returns immediately. The request does not wait for the OLT.

These endpoints accept async=1:

bulk_apply_configuration_preset and bulk_remove_configuration_preset are always asynchronous. They also use the asynchronous budget.

Why use asynchronous calls:

  • The request returns immediately. A normal request waits until the OLT finishes the command.
  • A bulk call accepts up to 10,000 ONU IDs with async=1, and only up to 50 ONU IDs without async=1.
  • Asynchronous calls use their own hourly budget, not the normal budget.
  • SmartOLT runs all actions for one ONU in the order it received them.

How to use asynchronous calls:

  1. Send the request with async=1.
  2. Read the queued field in the response. It shows which ONUs SmartOLT queued.
  3. Some minutes later, call check_bulk_task_status to see the result for each ONU. Do not call it in a tight loop. Each status check counts in the normal hourly budget.

Important: "queued": true means that SmartOLT accepted the action. It does not mean that the OLT did it. A request without async=1 can also return "queued": true when the ONU already has queued actions. Do not mark the action as done until check_bulk_task_status shows succeeded.

  • ONU statuses
    • Use the onu.status_changed real-time event.
    • If you cannot use events, call Get all ONUs statuses every 5-7 minutes, and store the response between calls.
  • ONU signal levels
    • Use the onu.signal_reading or onu.signal_changed real-time events. These events give the 1310 value only.
    • Call Get all ONUs signals at start-up, after a resync event, or when you need the 1490 value. If you cannot use events, call it every 15-30 minutes, and store the response between calls.
  • High-volume actions (enable, disable, CATV, speed profiles on many ONUs)
    • Use one bulk call with async=1 for up to 10,000 ONU IDs. Without async=1, a bulk call can only contain up to 50 ONU IDs.
    • Do not send one call for each ONU.

Important: Do not poll individual ONUs again and again when a bulk endpoint or a real-time event gives the same data. Your integration must store data, use reasonable polling intervals and use bulk calls. If your integration uses the API too much, SmartOLT can limit its calls to protect the platform for all users.

Section

Real-time events

Get ONU and PON events in real time. You do not need to poll the API.

You can get the events in two ways:

  • Event stream (SSE): your system keeps one HTTP connection open, and the events arrive on it. See Get event stream URL.
  • Webhook: SmartOLT sends each batch of events as an HTTPS POST to your URL. See Webhook delivery.

Both ways send the same event body:

{"type": "onu.status_changed", "timestamp": "2026-10-08T10:00:00Z", "data": {"onus": [ ... ]}}

ONU events put the rows in data.onus. PON events put the rows in data.pons. One batch has one event type and up to 1000 rows.

Event types:

  • onu.status_changed: the ONU status changed (Online, LOS, Power fail, Offline).
  • onu.authorized: an ONU was authorized.
  • onu.updated: the configuration or details of an ONU changed. You get the full current ONU row.
  • onu.deleted: an ONU was deleted.
  • onu.signal_changed: the ONU signal moved to another band, or changed by 2 dB or more.
  • onu.signal_reading: each new ONU signal reading.
  • pon.outage_started: a PON outage started.
  • pon.outage_ended: a PON outage ended.
  • onu.unconfigured_detected: a new ONU appeared in the Unconfigured list of an OLT. Disabled ONUs are not sent. An ONU that leaves the list and comes back within 15 minutes is not sent again.

Only API keys that you create in SmartOLT can use events.

GET

Get event stream URL

https://{subdomain}.smartolt.com/api/onu/get_event_stream

Gets a URL for a live event stream (Server-Sent Events). Open the URL with any SSE client, for example EventSource or curl -N.

How to use it

  1. Call this endpoint. Select the event types with events.
  2. Open the returned url within expires_in seconds (15 minutes).
  3. Read the events. Each event has an id, an event (the event type) and a data line with the event body.
  4. The stream closes after about 1 hour. Then call this endpoint again and open the new URL. Send the last id you got in the Last-Event-ID header. You then get the events that you missed.

Control events

  • resync: you missed events. Load the current data again, for example with Get all ONUs statuses.
  • expired: the stream is closed. Get a new URL.
  • disabled: the stream is closed because the API key was disabled or changed. Get a new URL.
  • A : ping comment comes every 25 seconds to keep the connection open.

Limits

  • You can call this endpoint up to 60 times per hour.
  • Each account can have up to 15 open streams for API keys.

It returns a 400 error code when events contains an unknown event type.

It returns a 403 error code when the API key is not a client API key.

It returns a 503 error code when the event stream is not available. Use Get all ONUs statuses until it is available again.

Parameters

NameInRequiredExampleDescription
eventsstringqueryNoonu.status_changed,pon.outage_started,pon.outage_ended

(String) The event types to get, separated by commas. Leave it empty to get only onu.status_changed. Known types: onu.status_changed, onu.authorized, onu.updated, onu.deleted, onu.signal_changed, onu.signal_reading, pon.outage_started, pon.outage_ended

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_event_stream?events=onu.status_changed%2Cpon.outage_started%2Cpon.outage_ended' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": {
    "url": "https://example.smartolt.com:8443/onu-status/stream?token=eyJkYiI6...",
    "expires_in": 900
  },
  "response_code": "success"
}
200200 - Stream content (open the returned url)โŒ„
text/plain
retry: 15000

id: 1728381600123-0
event: onu.status_changed
data: {"type":"onu.status_changed","timestamp":"2026-10-08T10:00:01Z","data":{"onus":[{"unique_external_id":"ext-1001","sn":"HWTC00000015","olt_id":"1","board":"0","port":"5","onu":"15","zone_id":"5","name":"John Doe","address":"Main St 1","contact":"+1555","odb_id":null,"status":"LOS","last_status_change":"2026-10-08 10:00:00.123456","status_observed_at":"2026-10-08 10:00:01"}]}}

: ping

id: 1728381720456-0
event: pon.outage_started
data: {"type":"pon.outage_started","timestamp":"2026-10-08T10:02:00Z","data":{"pons":[{"alert_kind":"full_outage","olt_id":"11","olt_name":"OLT 11","board":"2","port":"3","total_onus":"8","los_count":"8","power_count":"0","offline_count":"0","zone_name":"Zone 3","pon_description":"Feeder 3","cause":"los"}]}}
400400 - Unknown event typeโŒ„
application/json
{
  "status": false,
  "error": "Invalid events. Known event types: onu.status_changed, onu.authorized, onu.updated, onu.deleted, pon.outage_started, pon.outage_ended, onu.signal_changed, onu.signal_reading"
}
503503 - Not availableโŒ„
application/json
{
  "status": false,
  "error": "ONU status push is not available right now. Poll get_onus_statuses instead."
}
Section

Webhooks

POST

Webhook delivery (sent by SmartOLT to your server)

Webhook
SmartOLT โ†’ your HTTPS endpoint

This item is documentation only. You do not send this request. SmartOLT sends it to your server.

How to set up a webhook

  1. Go to General > API key. Click Edit on your API key.
  2. In the Webhook panel, enter your HTTPS URL and select the events.
  3. Copy the Signing secret.
  4. Click Send test event. Your server gets a webhook.test event.

Your server must

  • Use HTTPS on port 443 or 8443, with a valid certificate and a public IP address.
  • Return an HTTP 2xx status within 15 seconds. Redirects count as failures.
  • Ignore a webhook-id that it already processed. A retry sends the same webhook-id and body.

Retries: after a failure, SmartOLT sends the batch again after 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours, and then every 10 hours. After 5 days of failures, SmartOLT disables the webhook and sends you an email. You can enable it again on the API key page.

Headers

  • webhook-id: the ID of the batch, for example msg_3f2a....
  • webhook-timestamp: the time of the send, in Unix seconds.
  • webhook-signature: v1, followed by the signature.

How to check the signature

  1. Remove the whsec_ prefix from your signing secret. Decode the rest from base64. This is the key.
  2. Make the text {webhook-id}.{webhook-timestamp}.{raw body}.
  3. Calculate HMAC-SHA256 of the text with the key. Encode the result in base64.
  4. Compare it with the value after v1,. If they are not equal, reject the request.

This follows the Standard Webhooks format, so you can also use their libraries.

// PHP example
$key = base64_decode(substr($secret, 6));
$signed = $_SERVER['HTTP_WEBHOOK_ID'] . '.' . $_SERVER['HTTP_WEBHOOK_TIMESTAMP'] . '.' . file_get_contents('php://input');
$expected = 'v1,' . base64_encode(hash_hmac('sha256', $signed, $key, true));
$valid = hash_equals($expected, $_SERVER['HTTP_WEBHOOK_SIGNATURE']);

Example bodies for each event type are in the saved examples of this item.

Parameters

NameInRequiredExampleDescription
webhook-idstringheaderNomsg_3f2a9c0e7b1d4a6f8e2c5b9d0a1f3e7c6b8d2a4f9e0c1b3d5a7f9e2c4b6d8a0f

The ID of the batch. A retry sends the same ID.

webhook-timestampstringheaderNo1791453600

The time of the send, in Unix seconds.

webhook-signaturestringheaderNov1,K5oZfzN95Z9UVu1EsfQmfVNQhnkZ2pj9o9NDN/H/pI4=

v1, followed by the base64 HMAC-SHA256 signature.

application/jsonapplication/jsonbodyNoโ€”โ€”

Event examples

webhook.testโŒ„
application/json
{
  "type": "webhook.test",
  "timestamp": "2026-10-08T10:00:01Z",
  "data": {}
}
onu.status_changedโŒ„
application/json
{
  "type": "onu.status_changed",
  "timestamp": "2026-10-08T10:00:01Z",
  "data": {
    "onus": [
      {
        "unique_external_id": "ext-1001",
        "sn": "HWTC00000015",
        "olt_id": "1",
        "board": "0",
        "port": "5",
        "onu": "15",
        "zone_id": "5",
        "name": "John Doe",
        "address": "Main St 1",
        "contact": "+1555",
        "odb_id": null,
        "status": "LOS",
        "last_status_change": "2026-10-08 10:00:00.123456",
        "status_observed_at": "2026-10-08 10:01:00"
      }
    ]
  }
}
onu.unconfigured_detectedโŒ„
application/json
{
  "type": "onu.unconfigured_detected",
  "timestamp": "2026-10-10T08:15:02Z",
  "data": {
    "onus": [
      {
        "id": 0,
        "pon_type": "gpon",
        "board": "2",
        "port": "3",
        "pon_description": "",
        "onu": "1",
        "sn": "ZTEGC7E230E4",
        "onu_type_name": "ZTE-F660V6.0",
        "onu_type_id": "75",
        "olt_id": "1",
        "is_disabled": 0,
        "old_location": null,
        "new_location": null,
        "external_id": null,
        "first_seen_at": "2026-10-10 11:14:40",
        "last_seen_at": "2026-10-10 11:14:40",
        "actions": [
          "authorize"
        ]
      }
    ]
  }
}
onu.authorizedโŒ„
application/json
{
  "type": "onu.authorized",
  "timestamp": "2026-10-08T10:00:01Z",
  "data": {
    "onus": [
      {
        "unique_external_id": "ext-1001",
        "pon_type": "gpon",
        "sn": "HWTC00000015",
        "olt_id": "1",
        "olt_name": "OLT-A",
        "board": "0",
        "port": "5",
        "onu": "15",
        "onu_type_id": "3",
        "onu_type_name": "HG8546M",
        "zone_id": "5",
        "zone_name": "Zone 5",
        "name": "John Doe",
        "address": "Main St 1",
        "odb_name": "",
        "mode": "Routing",
        "wan_mode": "DHCP",
        "ip_address": null,
        "catv": "Disabled",
        "administrative_status": "Enabled",
        "authorization_date": "2026-10-08 09:00:00",
        "contact": "+1555"
      }
    ]
  }
}
onu.updatedโŒ„
application/json
{
  "type": "onu.updated",
  "timestamp": "2026-10-08T10:00:01Z",
  "data": {
    "onus": [
      {
        "unique_external_id": "ext-1001",
        "pon_type": "gpon",
        "sn": "HWTC00000015",
        "olt_id": "1",
        "olt_name": "OLT-A",
        "board": "0",
        "port": "5",
        "onu": "15",
        "onu_type_id": "3",
        "onu_type_name": "HG8546M",
        "zone_id": "5",
        "zone_name": "Zone 7",
        "name": "John Doe",
        "address": "Main St 1",
        "odb_name": "",
        "mode": "Routing",
        "wan_mode": "DHCP",
        "ip_address": null,
        "catv": "Disabled",
        "administrative_status": "Enabled",
        "authorization_date": "2026-10-08 09:00:00",
        "contact": "+1555"
      }
    ]
  }
}
onu.deletedโŒ„
application/json
{
  "type": "onu.deleted",
  "timestamp": "2026-10-08T10:00:01Z",
  "data": {
    "onus": [
      {
        "unique_external_id": "ext-1001",
        "sn": "HWTC00000015",
        "olt_id": "1",
        "board": "0",
        "port": "5",
        "onu": "15",
        "deleted_at": "2026-10-08 10:05:00"
      }
    ]
  }
}
onu.signal_changedโŒ„
application/json
{
  "type": "onu.signal_changed",
  "timestamp": "2026-10-08T10:00:01Z",
  "data": {
    "onus": [
      {
        "unique_external_id": "ext-1001",
        "sn": "HWTC00000015",
        "olt_id": "1",
        "board": "0",
        "port": "5",
        "onu": "15",
        "name": "John Doe",
        "rx1310": -25.1,
        "prev_rx1310": -22.9,
        "band": "Warning",
        "prev_band": "Very good",
        "delta": -2.2,
        "reading_at": "2026-10-08 10:00:00"
      }
    ]
  }
}
onu.signal_readingโŒ„
application/json
{
  "type": "onu.signal_reading",
  "timestamp": "2026-10-08T10:00:01Z",
  "data": {
    "onus": [
      {
        "unique_external_id": "ext-1001",
        "sn": "HWTC00000015",
        "olt_id": "1",
        "board": "0",
        "port": "5",
        "onu": "15",
        "name": "John Doe",
        "rx1310": -21,
        "band": "Very good",
        "reading_at": "2026-10-08 10:00:00"
      }
    ]
  }
}
pon.outage_startedโŒ„
application/json
{
  "type": "pon.outage_started",
  "timestamp": "2026-10-08T10:00:01Z",
  "data": {
    "pons": [
      {
        "alert_kind": "full_outage",
        "partial_started_at": null,
        "partial_last_seen_at": null,
        "olt_id": "11",
        "olt_name": "OLT 11",
        "olt_version": "2.0",
        "board": "2",
        "port": "3",
        "total_onus": "8",
        "has_gps": "0",
        "los_count": "8",
        "power_count": "0",
        "offline_count": "0",
        "location_id": "3",
        "zone_name": "Zone 3",
        "odb_id": null,
        "odb_name": null,
        "pon_description": "Feeder 3",
        "is_active": "1",
        "latest_status_change": "2026-10-08 10:00:00",
        "affected_onus": null,
        "affected_percent": null,
        "odb_names": "",
        "odb_count": 0,
        "cause": "los"
      }
    ]
  }
}
pon.outage_endedโŒ„
application/json
{
  "type": "pon.outage_ended",
  "timestamp": "2026-10-08T10:00:01Z",
  "data": {
    "pons": [
      {
        "alert_kind": "full_outage",
        "partial_started_at": null,
        "partial_last_seen_at": null,
        "olt_id": "11",
        "olt_name": "OLT 11",
        "olt_version": "2.0",
        "board": "2",
        "port": "3",
        "total_onus": "8",
        "has_gps": "0",
        "los_count": "8",
        "power_count": "0",
        "offline_count": "0",
        "location_id": "3",
        "zone_name": "Zone 3",
        "odb_id": null,
        "odb_name": null,
        "pon_description": "Feeder 3",
        "is_active": "1",
        "latest_status_change": "2026-10-08 10:00:00",
        "affected_onus": null,
        "affected_percent": null,
        "odb_names": "",
        "odb_count": 0,
        "cause": "los",
        "started_at": "2026-10-08 10:00:00",
        "ended_at": "2026-10-08 10:20:00"
      }
    ]
  }
}
Section

API endpoints

SmartOLT API requests in collection order.

GET

Get OLTs list

https://{subdomain}.smartolt.com/api/system/get_olts

To maintain platform stability and fair resource usage for all users, heavy usage may be subject to rate limiting or even revocation of all access to the SmartOLT API.

It has been observed that multiple API integrations are using this endpoint eroneusly as a heartbeat check of the API.
*Do NOT use this endpoint as a heartbeat between API calls.*

Gets a list of all OLTs names, IPs, telnet ports, SNMP ports and unique IDs.

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/system/get_olts' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "id": "1",
      "name": "Huawei",
      "olt_hardware_version": "Huawei-MA5680T",
      "ip": "1.2.3.4",
      "telnet_port": "2333",
      "snmp_port": "2161"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get OLTs uptime and environment temperature

https://{subdomain}.smartolt.com/api/olt/get_olts_uptime_and_env_temperature

Gets a list of all OLTs uptimes and environment temperatures.

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/olt/get_olts_uptime_and_env_temperature' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "olt_id": "1",
      "olt_name": "Huawei",
      "uptime": "576 days, 21:05",
      "env_temp": "24ยฐC"
    },
    {
      "olt_id": "2",
      "olt_name": "ZTE",
      "uptime": "93 days, 10:48",
      "env_temp": "38ยฐC"
    },
    {
      "olt_id": "3",
      "olt_name": "C600",
      "uptime": "431 days, 02:32",
      "env_temp": "33ยฐC"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get OLT cards details

https://{subdomain}.smartolt.com/api/system/get_olt_cards_details/{olt_id}

Gets a list of OLT cards by OLT ID, as defined in SmartOLT OLT cards section.

Each OLT card consists of:

  • slot
  • type
  • real type
  • number of ports
  • software version
  • status
  • role
  • date & time when the info was last updated

Parameters

NameInRequiredExampleDescription
olt_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/system/get_olt_cards_details/{olt_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "slot": "1",
      "type": "GTGO",
      "real_type": "GTGO",
      "ports": "8",
      "software_version": "V2.1.0",
      "status": "Online",
      "role": "Main",
      "info_updated": "2020-07-14 14:43:58"
    },
    {
      "slot": "2",
      "type": "GTGH",
      "real_type": "GTGH",
      "ports": "16",
      "software_version": "V2.1.0",
      "status": "Online",
      "role": "Main",
      "info_updated": "2020-07-14 14:43:58"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get OLT PON ports details

https://{subdomain}.smartolt.com/api/system/get_olt_pon_ports_details/{olt_id}

Gets a list of OLT PON ports by OLT ID, as defined in SmartOLT OLT PON ports section.

Each OLT PON port consists of:

  • slot
  • port
  • type
  • admin state
  • status
  • total ONUs
  • online ONUs
  • average signal
  • description
  • min range
  • max range
  • TX Power

Parameters

NameInRequiredExampleDescription
olt_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/system/get_olt_pon_ports_details/{olt_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "board": "2",
      "pon_port": "1",
      "pon_type": "GPON",
      "admin_status": "Enabled",
      "operational_status": "Up",
      "description": "",
      "min_range": "0 m",
      "max_range": "20000 m",
      "tx_power": "6.839 dBm",
      "onus_count": 0,
      "online_onus_count": 0,
      "average_signal": 0
    },
    {
      "board": "2",
      "pon_port": "2",
      "pon_type": "GPON",
      "admin_status": "Enabled",
      "operational_status": "Up",
      "description": "",
      "min_range": "0 m",
      "max_range": "30000 m",
      "tx_power": "7.041 dBm",
      "onus_count": 0,
      "online_onus_count": 0,
      "average_signal": 0
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get OLT outage PONs details

https://{subdomain}.smartolt.com/api/system/get_outage_pons/{olt_id}

Returns active PON outages for an OLT pre-aggregated and grouped for NOC triage.

  • Sections - three cause buckets: los (fiber cut, grouped by PON), power (grouped by zone), offline/unknown (grouped by zone). Each group lists the affected pons.
  • Each PON includes pon_description, and odb_names/odb_count โ€” the full set of ODBs/splitters on that PON (a PON spans many ODBs)
  • Stale - PONs down > 7 days (likely decommissioned), shown separately, never dropped

Parameters

NameInRequiredExampleDescription
olt_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/system/get_outage_pons/{olt_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "response": {
    "total_pons": 1,
    "sections": [
      {
        "key": "los",
        "group_by": "pon",
        "pon_count": 1,
        "subscribers": 12,
        "groups": [
          {
            "label": "test 2",
            "sublabel": "SMA",
            "pon_count": 1,
            "subscribers": 12,
            "since": "2026-06-21 21:14:22",
            "pons": [
              {
                "olt_id": "12",
                "olt_name": "OLT 1",
                "olt_version": "1.1.C6xx",
                "board": "1",
                "port": "1",
                "total_onus": "12",
                "has_gps": "1",
                "los_count": "12",
                "power_count": "0",
                "offline_count": "0",
                "location_id": "10",
                "zone_name": "SMA",
                "odb_id": "3645",
                "odb_name": "F401-055-5",
                "pon_description": "test 2",
                "odb_names": "F401-055-1, F401-055-2, F401-055-3, F401-055-4, F401-055-5, F401-055-6, F401-055-7, F401-055-8",
                "odb_count": 8,
                "latest_status_change": "2026-06-21 21:14:22",
                "is_active": "1"
              }
            ]
          }
        ]
      },
      {
        "key": "power",
        "group_by": "zone",
        "pon_count": 0,
        "subscribers": 0,
        "groups": []
      },
      {
        "key": "offline",
        "group_by": "zone",
        "pon_count": 0,
        "subscribers": 0,
        "groups": []
      }
    ],
    "stale": {
      "pon_count": 0,
      "subscribers": 0,
      "groups": []
    },
    "unreachable_olts": []
  },
  "response_code": "success",
  "status": true
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get ONU types list

https://{subdomain}.smartolt.com/api/system/get_onu_types

Gets a list of all ONU types as defined in SmartOLT ONU Types section.

Each ONU type consists of:

  • unique ID
  • name
  • PON type (it can be "gpon" or "epon")
  • capability (it can be "Bridging" or "Bridging/Routing")
  • number of ethernet ports
  • number of WiFi ports
  • number of VoIP ports
  • CATV
  • if it allows custom ONU profiles (1 - it allows, 0 - it doesn't allow)

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/system/get_onu_types' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "id": "29",
      "name": "ZTE-F623",
      "pon_type": "gpon",
      "capability": "Bridging/Routing",
      "ethernet_ports": 4,
      "wifi_ports": 4,
      "voip_ports": 2,
      "catv": "0",
      "allow_custom_profiles": "0"
    },
    {
      "id": "30",
      "name": "ZTE-F660",
      "pon_type": "gpon",
      "capability": "Bridging/Routing",
      "ethernet_ports": 4,
      "wifi_ports": 4,
      "voip_ports": 2,
      "catv": "0",
      "allow_custom_profiles": "1"
    },
    {
      "id": "44",
      "name": "ZTE-F401",
      "pon_type": "epon",
      "capability": "Bridging",
      "ethernet_ports": 1,
      "wifi_ports": 1,
      "voip_ports": 0,
      "catv": "0",
      "allow_custom_profiles": "0"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get ONU types list by PON type

https://{subdomain}.smartolt.com/api/system/get_onu_types_by_pon_type/{pon_type}

Gets a list of ONU types by PON type (it can be "gpon" or "epon"), as defined in SmartOLT ONU Types section.

Each ONU type consists of:

  • unique ID
  • name
  • PON type (it can be "gpon" or "epon")
  • capability (it can be "Bridging" or "Bridging/Routing")
  • number of ethernet ports
  • number of WiFi ports
  • number of VoIP ports
  • CATV
  • if it allows custom ONU profiles (1 - it allows, 0 - it doesn't allow)

Parameters

NameInRequiredExampleDescription
pon_typestringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/system/get_onu_types_by_pon_type/{pon_type}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "id": "29",
      "name": "ZTE-F623",
      "pon_type": "gpon",
      "capability": "Bridging/Routing",
      "ethernet_ports": 4,
      "wifi_ports": 4,
      "voip_ports": 2,
      "catv": "0",
      "allow_custom_profiles": "0"
    },
    {
      "id": "30",
      "name": "ZTE-F660",
      "pon_type": "gpon",
      "capability": "Bridging/Routing",
      "ethernet_ports": 4,
      "wifi_ports": 4,
      "voip_ports": 2,
      "catv": "0",
      "allow_custom_profiles": "1"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get ONU type image

https://{subdomain}.smartolt.com/api/system/get_onu_type_image/{onu_type_unique_id}

Gets the ONU type image for a specified ONU type unique ID.

The response consists of:

  • Onu type png image

It returns a 400 error code when:

  • no ONU type unique ID was provided
  • no ONU type was found for the provided unique ID

You can feed the response directly to an img tag in the src attribute with a Content-type header of "image/png".
Example:

PHP

header("Content-type: image/png");
echo $response_image;

HTML

img src="link_to_your_method_where_you_call_the_api"

Parameters

NameInRequiredExampleDescription
onu_type_unique_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/system/get_onu_type_image/{onu_type_unique_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
text/plain
Onu type image
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Add ONU type

https://{subdomain}.smartolt.com/api/system/add_onu_type

Adds a new ONU type.

Parameters

NameInRequiredExampleDescription
namestringbodyYesZTE-F660V6.0

(String) ONU type

pon_typestringbodyYesgpon

(String) ONU type PON type. Allowed values: gpon, epon

ethernet_ports_nrintegerbodyYes4

(Int) The number of ethernet ports. Allowed values: 1, 2, 3, 4, 5, 8, 16, 24

wifi_ssids_nrintegerbodyYes0

(Int) The number of WiFi SSIDs. Allowed values: 0, 1, 2, 3, 4, 5, 6, 7, 8

voip_ports_nrintegerbodyYes0

(Int) The number of VoIP ports. Allowed values: 0, 1, 2

catvintegerbodyYes0

(Int) 1 if it supports CATV, otherwise 0

allow_custom_profilesintegerbodyYes1

(Int) 1 if it allows custom profiles, otherwise 0

capabilitystringbodyYesBridging/Routing

(String) ONU type capability. Allowed values: Bridging/Routing, Bridging

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/system/add_onu_type' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode name=ZTE-F660V6.0 \
  --data-urlencode pon_type=gpon \
  --data-urlencode ethernet_ports_nr=4 \
  --data-urlencode wifi_ssids_nr=0 \
  --data-urlencode voip_ports_nr=0 \
  --data-urlencode catv=0 \
  --data-urlencode allow_custom_profiles=1 \
  --data-urlencode capability=Bridging/Routing

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU type ZTE-F660V6.0 added successfully"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get zones list

https://{subdomain}.smartolt.com/api/system/get_zones

Gets a list of all zones as defined in SmartOLT Zones section.

Each zone consists of:

  • unique ID
  • name

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/system/get_zones' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "id": "1",
      "name": "Zone 1"
    },
    {
      "id": "2",
      "name": "Zone 2"
    },
    {
      "id": "3",
      "name": "Zone 3"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Add zone

https://{subdomain}.smartolt.com/api/system/add_zone

Adds a new zone.

Parameters

NameInRequiredExampleDescription
zonestringbodyYesCity center

(String) Zone name

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/system/add_zone' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode 'zone=City center'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Zone City center added successfully"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get Splitters list

https://{subdomain}.smartolt.com/api/system/get_odbs/{zone_id}

Gets a list of all Splitters as defined in SmartOLT Splitters section.

If Zone ID is specified then it gets a list of all Splitters in that Zone.

Each splitter consists of:

  • unique ID
  • name
  • latitude
  • longitude
  • external ID
  • zone ID
  • zone name

Parameters

NameInRequiredExampleDescription
zone_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/system/get_odbs/{zone_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "id": "2",
      "name": "test odb",
      "latitude": "44.4352497825479",
      "longitude": "26.100036719531257",
      "external_id": "ODB-A19",
      "zone_id": "1",
      "zone_name": "Zone 1"
    },
    {
      "id": "3",
      "name": "test odb2",
      "latitude": null,
      "longitude": null,
      "external_id": "ODB-B",
      "zone_id": "18",
      "zone_name": "Zone 2"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Add Splitter

https://{subdomain}.smartolt.com/api/system/add_odb

Adds a new splitter.

error_code: specify_odb, incorrect_odb, odb_already_exists, specify_zone, incorrect_zone, incorrect_nr_of_ports, incorrect_latitude, incorrect_longitude, incorrect_external_id, odb_add_failed (all 400); 403 when the key has no access to the zone.

external_id must not already be used by another splitter โ€” external_id_not_unique (400).

Parameters

NameInRequiredExampleDescription
zonestringbodyYesCity center

(String) Zone name

namestringbodyYesODB 1

(String) Splitter name

nr_of_portsintegerbodyNo3

(Int) The number of ports of the splitter

latitudestringbodyNo52.5113340328893

(String) Latitude

longitudestringbodyNo13.401282438647513

(String) Longitude

external_idstringbodyNoODB-A19

(String) Max 191 chars. Must not already be used by another splitter - enforced, external_id_not_unique (400). This is the key that identifies the splitter on edit/delete.

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/system/add_odb' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode 'zone=City center' \
  --data-urlencode 'name=ODB 1' \
  --data-urlencode nr_of_ports=3 \
  --data-urlencode latitude=52.5113340328893 \
  --data-urlencode longitude=13.401282438647513 \
  --data-urlencode external_id=ODB-A19

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": {
    "id": 12,
    "message": "ODB Block A added successfully"
  },
  "response_code": "success"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Edit Splitter by unique external ID

https://{subdomain}.smartolt.com/api/system/edit_odb/{odb_external_id}

Update an existing splitter by its unique external ID. At least one field must be sent, otherwise the call fails with nothing_to_update.

Selecting the Splitter. The URL segment is the splitter's unique external_id. Alternatively post odb_id with the internal numeric ID - if both are provided, then the internal ID is used to select the splitter.

error_code: specify_odb_id (400, neither selector sent), odb_does_not_exist (400), 403 with no error_code when the key has no access to the splitter's zone or the splitter itself, nr_of_ports_below_used (400), nothing_to_update (400), plus the same field-validation codes as Add Splitter.

Setting external_id to a value already used by another splitter fails with external_id_not_unique (400).

Parameters

NameInRequiredExampleDescription
odb_external_idstringpathYesโ€”โ€”
namestringbodyNoODB Block A renamed

(String) Send only the fields you want to change โ€” omitted fields are left untouched.

zonestringbodyNoCenter

(String) Zone NAME. Moves the splitter to another zone.

nr_of_portsstringbodyNo24

(String) Cannot be lowered below the highest splitter port an ONU is currently connected to.

latitudestringbodyNo44.4325โ€”
longitudestringbodyNo26.1039โ€”
external_idstringbodyNoODB-A19-NEW

(String) Sets a NEW external ID on the row - a value to write, NOT how the row is selected (selection is the URL segment or odb_id). Must not already be used by another splitter.

odb_idintegerbodyNo{{odb_id}}

(Int) Internal numeric ID. When sent, it takes precedence over the external ID in the URL segment. Use it when the external ID is ambiguous or contains characters a URL segment cannot carry.

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/system/edit_odb/{odb_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode 'name=ODB Block A renamed' \
  --data-urlencode zone=Center \
  --data-urlencode nr_of_ports=24 \
  --data-urlencode latitude=44.4325 \
  --data-urlencode longitude=26.1039 \
  --data-urlencode external_id=ODB-A19-NEW \
  --data-urlencode 'odb_id={{odb_id}}'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ODB updated successfully",
  "response_code": "success"
}
POST

Delete Splitter by unique external ID

https://{subdomain}.smartolt.com/api/system/delete_odb/{odb_external_id}

Deletes a splitter.

Refused while ONUs are still assigned to the splitter.

error_code: specify_odb_id (400), odb_does_not_exist (400), odb_in_use (403, ONUs still assigned), 403 with no error_code for an out-of-scope splitter.

Parameters

NameInRequiredExampleDescription
odb_external_idstringpathYesโ€”โ€”
odb_idintegerbodyNo{{odb_id}}

(Int) Internal numeric ID; takes precedence over the URL segment.

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/system/delete_odb/{odb_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode 'odb_id={{odb_id}}'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ODB ODB Block A deleted successfully",
  "response_code": "success"
}
403403 - ODB in useโŒ„
application/json
{
  "status": false,
  "error": "This ODB is assigned to 4 ONU(s) and cannot be deleted",
  "error_code": "odb_in_use"
}
GET

Get speed profiles list

https://{subdomain}.smartolt.com/api/system/get_speed_profiles

Gets a list of all speed profiles as defined in SmartOLT Speed profiles section.

Each speed profile consists of:

  • unique ID
  • name
  • speed
  • direction: upload or download
  • type: iptv or internet

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/system/get_speed_profiles' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "id": 1,
      "name": "100M",
      "speed": "104960",
      "direction": "download",
      "type": "iptv"
    },
    {
      "id": 2,
      "name": "INTERNET_100_Mb",
      "speed": "104960",
      "direction": "upload",
      "type": "internet"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get VLANs list

https://{subdomain}.smartolt.com/api/olt/get_vlans/{olt_id}

Gets a list of OLT VLANs by OLT ID, as defined in SmartOLT OLT VLANs section.

Each VLAN consists of:

  • unique ID
  • VLAN
  • description
  • OLT ID
  • scope: iptv, mgmt/voip, lan_to_lan or internet
  • default_for_pon_ports: board_1_port_3, board_2_port_1

Parameters

NameInRequiredExampleDescription
olt_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/olt/get_vlans/{olt_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "id": "1830",
      "vlan": "10",
      "description": null,
      "olt_id": "1",
      "scope": "internet"
    },
    {
      "id": "1832",
      "vlan": "900",
      "description": "IPTV",
      "olt_id": "1",
      "scope": "iptv"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Add VLAN

https://{subdomain}.smartolt.com/api/olt/add_vlan/{olt_id}

Adds a VLAN to the OLT specified by the OLT ID.

Parameters

NameInRequiredExampleDescription
olt_idstringpathYesโ€”โ€”
vlanintegerbodyYes30

(Int) VLAN-ID

descriptionstringbodyNotest vlan

(String) VLAN description

for_iptvintegerbodyNo0

(Int) 1 if the VLAN is a Multicast VLAN, used for IPTV, otherwise 0

for_mgmt_voipintegerbodyNo1

(Int) 1 if the VLAN is a Management/VoIP VLAN, otherwise 0

dhcp_snoopingintegerbodyNo0

(Int) 1 to enable DHCP Snooping on VLAN, otherwise 0

lan_to_lanintegerbodyNo0

(Int) 1 to enable direct communication between ONUs on this VLAN (aka. LAN-to-LAN), otherwise 0

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/olt/add_vlan/{olt_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode vlan=30 \
  --data-urlencode 'description=test vlan' \
  --data-urlencode for_iptv=0 \
  --data-urlencode for_mgmt_voip=1 \
  --data-urlencode dhcp_snooping=0 \
  --data-urlencode lan_to_lan=0

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "VLAN 30 added successfully to OLT Test"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get billing details

https://{subdomain}.smartolt.com/api/system/get_billing_details

Gets a list of all OLTs subscription details.

For each OLT the subscription details are:

  • OLT unique ID
  • OLT name
  • subscription status
  • subscription end date (inclusive)

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/system/get_billing_details' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
text/plain
{
    "status": true,
    "response": {
        "olts": [
            {
                "olt_id": "1",
                "olt_name": "Huawei",
                "olt_subscription_status": "active",
                "olt_subscription_end_date": "18-Apr-2022"
            },
            {
                "olt_id": "2",
                "olt_name": "ZTE",
                "olt_subscription_status": "expired",
                "olt_subscription_end_date": "31-Dec-2020"
            }
    ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get all unconfigured ONUs

https://{subdomain}.smartolt.com/api/onu/unconfigured_onus

Gets a list of all unconfigured ONUs on all OLTs.

Each unconfigured ONU consists of:

  • PON type (it can be "gpon" or "epon")
  • board
  • port
  • onu
  • sn (in case of gpon ONU is the SN, in case of epon ONU is the MAC)
  • ONU type name
  • ONU type unique ID
  • OLT unique ID
  • if ONU is disabled (1 - is disabled, 0 - is enabled)
  • A list of possible actions for this ONU: view, resync_config, authorize, move_here

Parameters

NameInRequiredExampleDescription
snstringqueryNoAD0

(Optional) Search for a specific SN. Performed search is of type CONTAINS.

onu_typestringqueryNoF6

(Optional) Search for a specific ONU type. Performed search is of type CONTAINS.

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/unconfigured_onus?sn=AD0&onu_type=F6' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "id": 0,
      "pon_type": "gpon",
      "board": "2",
      "port": "3",
      "pon_description": "",
      "onu": "1",
      "sn": "ZTEGC7E230E4",
      "onu_type_name": "ZTE-F660V6.0",
      "onu_type_id": "75",
      "olt_id": "1",
      "is_disabled": 0,
      "old_location": null,
      "new_location": null,
      "external_id": null,
      "actions": [
        "authorize"
      ]
    },
    {
      "id": 0,
      "pon_type": "epon",
      "board": "1",
      "port": "3",
      "onu": "1",
      "sn": "98F4.28FF.0005",
      "onu_type_name": "ZTE-F460",
      "onu_type_id": "45",
      "olt_id": "1",
      "is_disabled": 0,
      "old_location": null,
      "new_location": null,
      "external_id": null,
      "actions": [
        "authorize"
      ]
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get unconfigured ONUs by OLT unique ID

https://{subdomain}.smartolt.com/api/onu/unconfigured_onus_for_olt/{olt_id}

Gets a list of all unconfigured ONUs for a specified OLT unique ID.

Each unconfigured ONU consists of:

  • PON type (it can be "gpon" or "epon")
  • board
  • port
  • onu
  • sn (in case of gpon ONU is the SN, in case of epon ONU is the MAC)
  • ONU type name
  • ONU type unique ID
  • OLT unique ID
  • if ONU is disabled (1 - is disabled, 0 - is enabled)
  • A list of possible actions for this ONU: view, resync_config, authorize, move_here

It returns a 400 error code when:

  • no OLT ID was provided
  • no OLT was found for the provided OLT ID

Parameters

NameInRequiredExampleDescription
olt_idstringpathYesโ€”โ€”
snstringqueryNoAD0

(Optional) Search for a specific SN. Performed search is of type CONTAINS.

onu_typestringqueryNoF6

(Optional) Search for a specific ONU type. Performed search is of type CONTAINS.

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/unconfigured_onus_for_olt/{olt_id}?sn=AD0&onu_type=F6' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "id": 0,
      "pon_type": "gpon",
      "board": "2",
      "port": "3",
      "onu": "1",
      "sn": "ZTEGC7E230E4",
      "onu_type_name": "ZTE-F660V6.0",
      "onu_type_id": "75",
      "olt_id": "1",
      "is_disabled": 0,
      "old_location": null,
      "new_location": null,
      "external_id": null,
      "actions": [
        "authorize"
      ]
    },
    {
      "id": 0,
      "pon_type": "epon",
      "board": "1",
      "port": "3",
      "onu": "1",
      "sn": "98F4.28FF.0005",
      "onu_type_name": "ZTE-F460",
      "onu_type_id": "45",
      "olt_id": "1",
      "is_disabled": 0,
      "old_location": null,
      "new_location": null,
      "external_id": null,
      "actions": [
        "authorize"
      ]
    }
  ]
}
400400 - No OLT for IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No OLT was found with ID 100"
}
400400 - Specify OLT IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the OLT ID"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get all ONUs statuses

https://{subdomain}.smartolt.com/api/onu/get_onus_statuses

Gets all the ONUs statuses for a specified OLT ID, board, PON port or zone. If no OLT ID, board, PON port or zone is specified, then all the ONUs statuses on all OLTs will be returned.

ONU statuses returned can be:

  • Online
  • Power fail
  • LOS
  • Offline

It returns a 400 error code when:

  • no OLT was found for the provided OLT ID
  • no OLT ID was provided with board or PON port
  • no OLT ID or no board was provided with PON port
  • no Zone was found for the provided zone name

Parameters

NameInRequiredExampleDescription
olt_idintegerqueryNo1

(Int) The ID of the OLT for which to get the ONUs statuses. Leave empty if you want statuses from all OLTs

boardintegerqueryNo2

(Int) OLT board where the ONUs are placed. Leave it empty if you want statuses from all boards on the provided OLT ID

portintegerqueryNo3

(Int) OLT PON port where ONUs are placed. Leave it empty if you want statuses from all PON ports on the provided board

zonestringqueryNoCity Centre

(String) The zone where the ONUs are located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character. Leave it empty if you want ONUs statuses from all the zones

status_changed_afterstringqueryNoโ€”

(String) Returns only the ONUs whose status changed at or after this date. Use ISO 8601 with a time zone, for example 2026-09-29T10:00:00+00:00. A date without a time zone is read in the time zone of your SmartOLT account.

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onus_statuses?olt_id=1&board=2&port=3&zone=City%20Centre&status_changed_after=None' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "unique_external_id": "test1",
      "sn": "ZTEGC1D48C98",
      "olt_id": "53",
      "board": "0",
      "port": "3",
      "onu": "20",
      "zone_id": "1",
      "name": "test 1",
      "address": "",
      "contact": "",
      "odb_id": null,
      "status": "Online",
      "last_status_change": "2025-12-30 12:00:00"
    },
    {
      "unique_external_id": "test2",
      "sn": "ZTEGC171A71A",
      "olt_id": "53",
      "board": "1",
      "port": "4",
      "onu": "4",
      "zone_id": "1",
      "name": "test 2",
      "address": "",
      "contact": "",
      "odb_id": null,
      "status": "Offline",
      "last_status_change": "2025-12-30 12:00:00"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get all ONUs administrative statuses

https://{subdomain}.smartolt.com/api/onu/get_onus_administrative_statuses

Gets all the ONUs administrative statuses for a specified OLT ID, board, PON port or zone. If no OLT ID, board, PON port or zone is specified, then all the ONUs statuses on all OLTs will be returned.

ONU administrative statuses returned can be:

  • Enabled
  • Disabled

It returns a 400 error code when:

  • no OLT was found for the provided OLT ID
  • no OLT ID was provided with board or PON port
  • no OLT ID or no board was provided with PON port
  • no Zone was found for the provided zone name

Parameters

NameInRequiredExampleDescription
olt_idintegerqueryNo1

(Int) The ID of the OLT for which to get the ONUs statuses. Leave empty if you want statuses from all OLTs

boardintegerqueryNo2

(Int) OLT board where the ONUs are placed. Leave it empty if you want statuses from all boards on the provided OLT ID

portintegerqueryNo3

(Int) OLT PON port where ONUs are placed. Leave it empty if you want statuses from all PON ports on the provided board

zonestringqueryNoCity Centre

(String) The zone where the ONUs are located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character. Leave it empty if you want ONUs statuses from all the zones

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onus_administrative_statuses?olt_id=1&board=2&port=3&zone=City%20Centre' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "unique_external_id": "test1",
      "sn": "ZTEGC1D48C98",
      "pon_type": "gpon",
      "olt_id": "53",
      "board": "0",
      "port": "3",
      "onu": "20",
      "zone_id": "1",
      "name": "test 1",
      "address": "",
      "contact": "",
      "admin_status": "Enabled"
    },
    {
      "unique_external_id": "test2",
      "sn": "ZTEGC171A71A",
      "pon_type": "gpon",
      "olt_id": "53",
      "board": "1",
      "port": "4",
      "onu": "4",
      "zone_id": "1",
      "name": "test 2",
      "address": "",
      "contact": "",
      "admin_status": "Disabled"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get all ONUs CATV statuses

https://{subdomain}.smartolt.com/api/onu/get_onus_catv_statuses

Gets all the ONUs CATV statuses for a specified OLT ID, board, PON port or zone. If no OLT ID, board, PON port or zone is specified, then all the ONUs statuses on all OLTs will be returned.

ONU CATV statuses returned can be:

  • Enabled
  • Disabled
  • CATV not supported by ONU-Type

It returns a 400 error code when:

  • no OLT was found for the provided OLT ID
  • no OLT ID was provided with board or PON port
  • no OLT ID or no board was provided with PON port
  • no Zone was found for the provided zone name

Parameters

NameInRequiredExampleDescription
olt_idintegerqueryNo1

(Int) The ID of the OLT for which to get the ONUs statuses. Leave empty if you want statuses from all OLTs

boardintegerqueryNo2

(Int) OLT board where the ONUs are placed. Leave it empty if you want statuses from all boards on the provided OLT ID

portintegerqueryNo3

(Int) OLT PON port where ONUs are placed. Leave it empty if you want statuses from all PON ports on the provided board

zonestringqueryNoCity Centre

(String) The zone where the ONUs are located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character. Leave it empty if you want ONUs statuses from all the zones

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onus_catv_statuses?olt_id=1&board=2&port=3&zone=City%20Centre' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "unique_external_id": "test1",
      "sn": "ZTEGC1D48C98",
      "olt_id": "53",
      "board": "0",
      "port": "3",
      "onu": "20",
      "zone_id": "1",
      "name": "test 1",
      "address": "",
      "contact": "",
      "catv_status": "Enabled"
    },
    {
      "unique_external_id": "test2",
      "sn": "ZTEGC171A71A",
      "olt_id": "53",
      "board": "1",
      "port": "4",
      "onu": "4",
      "zone_id": "1",
      "name": "test 2",
      "address": "",
      "contact": "",
      "catv_status": "Disabled"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get all ONUs signals

https://{subdomain}.smartolt.com/api/onu/get_onus_signals

Gets all the ONUs signals for a specified OLT ID, board, PON port or zone. If no OLT ID, board, PON port or zone is specified, then all the ONUs signals on all OLTs will be returned.

The response consists of:

  • ONU signal: 'Critical', 'Warning', 'Very good'
  • ONU signal 1310 value

It returns a 400 error code when:

  • no OLT was found for the provided OLT ID
  • no OLT ID was provided with board or PON port
  • no OLT ID or no board was provided with PON port
  • no Zone was found for the provided zone name

Parameters

NameInRequiredExampleDescription
olt_idintegerqueryNo1

(Int) The ID of the OLT for which to get the ONUs statuses. Leave empty if you want signals from all OLTs

boardintegerqueryNo2

(Int) OLT board where the ONUs are placed. Leave it empty if you want signals from all boards on the provided OLT ID

portintegerqueryNo3

(Int) OLT PON port where ONUs are placed. Leave it empty if you want signals from all PON ports on the provided board

zonestringqueryNoCity Centre

(String) The zone where the ONUs are located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character. Leave it empty if you want ONUs signals from all the zones

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onus_signals?olt_id=1&board=2&port=3&zone=City%20Centre' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": [
    {
      "unique_external_id": "test1",
      "sn": "ZTEGC1D48C98",
      "olt_id": "53",
      "board": "0",
      "port": "3",
      "onu": "20",
      "zone_id": "1",
      "name": "test 1",
      "address": "",
      "contact": "",
      "odb_id": null,
      "signal_1310": "-20.05 dBm",
      "signal": "Very good",
      "signal_1490": "-"
    },
    {
      "unique_external_id": "test2",
      "sn": "ZTEGC171A71A",
      "olt_id": "53",
      "board": "1",
      "port": "4",
      "onu": "4",
      "zone_id": "1",
      "name": "test 2",
      "address": "",
      "contact": "",
      "odb_id": null,
      "signal_1310": "-11.89 dBm",
      "signal": "Very good",
      "signal_1490": "-"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get all ONUs details

https://{subdomain}.smartolt.com/api/onu/get_all_onus_details

Gets all the ONUs details for a specified OLT ID, board, PON port or zone. If no OLT ID, board, PON port or zone is specified, then all the ONUs details on all OLTs will be returned.

The "Get all ONUs details" method is equivalent to an export of the entire database of ONU details and therefore it is not recommended to be used repeatedly, as the contained information does not change so often.

Maximum recommended calls for "Get all ONUs details": 15 per hour (calls are blocked after the limit is reached).

Pagination (recommended)

Pass page to receive results in pages. page_size accepts 1-100 (default 100). Paginated calls do not consume the 15/hours budget of the full export - they count toward the general API budget.

The paginated response is:

{ "status": true, "page": 1, "page_size": 100, "total_items": 4111, "total_pages": 42, "onus": [...] }

total_items/total_pages are included on page 1.

Page through the full inventory once, store it, then poll with updated_since= (e.g. 2026-07-08 12:00:00) to receive only ONUs whose configuration changed since. A typical incremental sync is 1โ€“2 calls instead of re-paging everything. Status/signal changes do not touch updated_since โ€” use the dedicated statuses/signals endpoints for those.

Filters

All optional and combinable โ€” see the query parameters table. Text filters (sn, external_id, name, address) match partially; enum filters return 400 on invalid values.

Full export

Calling without page returns every ONU in one response ({ "status": true, "onus": [...] }). This is equivalent to an export of the entire database: maximum 15 calls per hour, blocked at the limit. Prefer pagination + updated_since.

Errors

  • 400 โ€” unknown OLT ID / zone / splitter, board/port without the required OLT ID, or an invalid filter value (unparseable date, unknown status token)
  • Unsupported query parameters are deprecated: they currently return a Deprecation warning header and will be rejected with 410 Gone
  • 429 โ€” rate limit exceeded; the response carries Retry-After (seconds until the counting window resets). Back off and retry after that interval

Parameters

NameInRequiredExampleDescription
pageintegerqueryNo1

(Int) Page number. Enables pagination (recommended).

page_sizeintegerqueryNo100

(Int) Items per page, 1โ€“100. Default 100.

updated_sincestringqueryNo2026-07-08 12:00:00

(String) Only ONUs whose configuration changed since this date. Use for incremental sync after one full pull.

fieldsstringqueryNosn,name,status

(String) Comma-separated list of response fields to return. Include service_ports/ethernet_ports/wifi_ports/voip_ports only when needed โ€” skipping them is faster.

olt_idintegerqueryNo1

(Int) The ID of the OLT for which to get the ONUs details. Leave empty if you want ONUs details from all OLTs

boardintegerqueryNo2

(Int) OLT board where the ONUs are placed. Leave it empty if you want ONUs details from all boards on the provided OLT ID

portintegerqueryNo3

(Int) OLT PON port where ONUs are placed. Leave it empty if you want ONUs details from all PON ports on the provided board

zonestringqueryNoCity Centre

(String) The zone where the ONUs are located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character. Leave it empty if you want ONUs details from all the zones

odbstringqueryNoSplitter325

(String) Splitter. The Splitter can contain only alphanumeric characters, spaces, underscore and the dash (-) character

snstringqueryNoโ€”

(String) ONU SN

external_idstringqueryNoโ€”

(String) ONU unique external ID

namestringqueryNoโ€”

(String) ONU name

addressstringqueryNoโ€”

(String) ONU address

onu_type_idstringqueryNoโ€”

(String) ONU type ID (comma-separable)

vlanstringqueryNoโ€”

(String) ONU VLAN

modestringqueryNoRouting

(String) ONU mode. Allowed values: Bridging or Routing.

wan_modestringqueryNoPPPoE

(String) ONU router mode. Allowed values: Setup via ONU webpage, DHCP, Static or PPPoE.

administrative_statusstringqueryNoenabled

(String) ONU admin status: Allowed values: enabled, disabled.

tr069stringqueryNoenabled

(String) ONU TR069 status: Allowed values: enabled, disabled.

catvstringqueryNoenabled

(String) ONU CATV status: Allowed values: enabled, disabled.

statusstringqueryNoonline

(String) ONU status: Allowed values: online, pwrfail, los, offline. A comma separated list of these values is also allowed.

signalstringqueryNocritical

(String) ONU signal: Allowed values: very_good, warning, critical.

authorized_afterstringqueryNoโ€”

(String)ONU authorized on/after this date.

authorized_beforestringqueryNoโ€”

(String) ONU authorized on/before this date.

status_changed_afterstringqueryNoโ€”

(String) Returns only the ONUs whose status changed at or after this date. Use ISO 8601 with a time zone, for example 2026-09-29T10:00:00+00:00. A date without a time zone is read in the time zone of your SmartOLT account.

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_all_onus_details?page=1&page_size=100&updated_since=2026-07-08%2012%3A00%3A00&fields=sn%2Cname%2Cstatus&olt_id=1&board=2&port=3&zone=City%20Centre&odb=Splitter325&mode=Routing&wan_mode=PPPoE&administrative_status=enabled&tr069=enabled&catv=enabled&status=online&signal=critical' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "onus": [
    {
      "unique_external_id": "HWTC12341234",
      "pon_type": "gpon",
      "gpon_channel": "gpon",
      "sn": "HWTC12341234",
      "olt_id": "53",
      "olt_name": "Huawei",
      "board": "1",
      "port": "1",
      "onu": "0",
      "onu_type_id": "308",
      "onu_type_name": "ONU-type-eth-4-pots-2-catv-0",
      "zone_id": "182",
      "zone_name": "Zone",
      "name": "test",
      "address": "",
      "odb_name": "",
      "odb_port": "",
      "mode": "Routing",
      "wan_mode": "Setup via ONU webpage",
      "ip_address": null,
      "subnet_mask": null,
      "default_gateway": null,
      "dns1": null,
      "dns2": null,
      "username": null,
      "password": null,
      "mgmt_ip_mode": "Inactive",
      "mgmt_ip_address": null,
      "mgmt_ip_subnet_mask": null,
      "mgmt_ip_default_gateway": null,
      "mgmt_ip_dns1": null,
      "mgmt_ip_dns2": null,
      "mgmt_ip_service_port": null,
      "mgmt_ip_vlan": null,
      "mgmt_ip_cvlan": null,
      "mgmt_ip_svlan": null,
      "mgmt_ip_tag_transform_mode": null,
      "voip_service": "Disabled",
      "voip_ip_mode": null,
      "voip_ip_address": null,
      "voip_ip_subnet_mask": null,
      "voip_ip_default_gateway": null,
      "voip_ip_dns1": null,
      "voip_ip_dns2": null,
      "voip_ip_service_port": null,
      "voip_ip_vlan": null,
      "voip_ip_cvlan": null,
      "voip_ip_svlan": null,
      "voip_ip_tag_transform_mode": null,
      "iptv": "Disabled",
      "iptv_service_port": null,
      "iptv_vlan": null,
      "iptv_cvlan": null,
      "iptv_svlan": null,
      "iptv_tag_transform_mode": null,
      "iptv_upload_speed": null,
      "iptv_download_speed": null,
      "iptv_allowed_macs": null,
      "iptv_filtered_macs": null,
      "custom_template_name": null,
      "tr069": "Disabled",
      "tr069_profile": null,
      "tr069_device_id": null,
      "catv": "Not supported by ONU-Type",
      "administrative_status": "Enabled",
      "authorization_date": "2023-06-04 00:00:00",
      "is_synced_after_import": "0",
      "is_failed_resync_config": "0",
      "status": null,
      "last_status_change": null,
      "signal": null,
      "signal_1310": null,
      "signal_1490": null,
      "latitude": null,
      "longitude": null,
      "contact": "",
      "service_ports": [
        {
          "service_port": "348",
          "vlan": "20",
          "cvlan": "",
          "svlan": "",
          "tag_transform_mode": "translate",
          "upload_speed": "1G",
          "download_speed": "1G"
        }
      ],
      "ethernet_ports": [
        {
          "port": "eth_0/1",
          "admin_state": "Enabled",
          "mode": "Access",
          "dhcp": "No control",
          "vlan": "20",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/2",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/3",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/4",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        }
      ],
      "wifi_ports": [],
      "voip_ports": [],
      "applied_configuration_preset": {
        "preset_id": 5,
        "preset_name": "test preset",
        "is_reversible": true,
        "applied_at": "2026-07-23 06:51:54",
        "status": "active"
      }
    },
    {
      "unique_external_id": "test2",
      "pon_type": "gpon",
      "gpon_channel": "gpon",
      "sn": "ZTEGC171A71A",
      "name": "Test name2",
      "olt_id": "53",
      "olt_name": "OLT 1",
      "board": "1",
      "port": "4",
      "onu": "4",
      "onu_type_id": "2",
      "onu_type_name": "ZTE-F600",
      "zone_id": "1",
      "zone_name": "City Center",
      "address": null,
      "odb_name": "ODB 2",
      "odb_port": "",
      "mode": "Routing",
      "wan_mode": "Setup via ONU webpage",
      "ip_address": null,
      "subnet_mask": null,
      "default_gateway": null,
      "dns1": null,
      "dns2": null,
      "username": null,
      "password": null,
      "mgmt_ip_mode": "Inactive",
      "mgmt_ip_address": null,
      "mgmt_ip_subnet_mask": null,
      "mgmt_ip_default_gateway": null,
      "mgmt_ip_dns1": null,
      "mgmt_ip_dns2": null,
      "mgmt_ip_service_port": null,
      "mgmt_ip_vlan": null,
      "mgmt_ip_cvlan": null,
      "mgmt_ip_svlan": null,
      "mgmt_ip_tag_transform_mode": null,
      "voip_service": "Disabled",
      "voip_ip_mode": "DHCP",
      "voip_ip_address": null,
      "voip_ip_subnet_mask": null,
      "voip_ip_default_gateway": null,
      "voip_ip_dns1": null,
      "voip_ip_dns2": null,
      "voip_ip_service_port": null,
      "voip_ip_vlan": null,
      "voip_ip_cvlan": null,
      "voip_ip_svlan": null,
      "voip_ip_tag_transform_mode": null,
      "iptv": "OLT IPTV module disabled",
      "iptv_service_port": null,
      "iptv_vlan": null,
      "iptv_cvlan": null,
      "iptv_svlan": null,
      "iptv_tag_transform_mode": null,
      "iptv_upload_speed": null,
      "iptv_download_speed": null,
      "iptv_allowed_macs": null,
      "iptv_filtered_macs": null,
      "custom_template_name": null,
      "tr069": "Disabled",
      "tr069_profile": null,
      "tr069_device_id": null,
      "catv": "Enabled",
      "administrative_status": "Enabled",
      "authorization_date": "2021-08-30 00:00:00",
      "is_synced_after_import": 1,
      "is_failed_resync_config": 0,
      "status": null,
      "last_status_change": "2025-12-30 12:00:00",
      "signal": null,
      "signal_1310": null,
      "signal_1490": null,
      "latitude": null,
      "longitude": null,
      "contact": "",
      "service_ports": [
        {
          "service_port": "100",
          "vlan": "150",
          "cvlan": "",
          "svlan": "",
          "tag_transform_mode": "",
          "upload_speed": "1G",
          "download_speed": "1G"
        }
      ],
      "ethernet_ports": [
        {
          "port": "eth_0/1",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/2",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/3",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/4",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        }
      ],
      "wifi_ports": [],
      "voip_ports": [],
      "applied_configuration_preset": null
    }
  ]
}
200200 - OK (paginated)โŒ„
application/json
{
  "status": true,
  "page": 1,
  "page_size": 100,
  "total_items": 4111,
  "total_pages": 42,
  "onus": [
    {
      "unique_external_id": "HWTC12341234",
      "pon_type": "gpon",
      "gpon_channel": "gpon",
      "sn": "HWTC12341234",
      "olt_id": "53",
      "olt_name": "Huawei",
      "board": "1",
      "port": "1",
      "onu": "0",
      "onu_type_id": "308",
      "onu_type_name": "ONU-type-eth-4-pots-2-catv-0",
      "zone_id": "182",
      "zone_name": "Zone",
      "name": "test",
      "address": "",
      "odb_name": "",
      "odb_port": "",
      "mode": "Routing",
      "wan_mode": "Setup via ONU webpage",
      "ip_address": null,
      "subnet_mask": null,
      "default_gateway": null,
      "dns1": null,
      "dns2": null,
      "username": null,
      "password": null,
      "mgmt_ip_mode": "Inactive",
      "mgmt_ip_address": null,
      "mgmt_ip_subnet_mask": null,
      "mgmt_ip_default_gateway": null,
      "mgmt_ip_dns1": null,
      "mgmt_ip_dns2": null,
      "mgmt_ip_service_port": null,
      "mgmt_ip_vlan": null,
      "mgmt_ip_cvlan": null,
      "mgmt_ip_svlan": null,
      "mgmt_ip_tag_transform_mode": null,
      "voip_service": "Disabled",
      "voip_ip_mode": null,
      "voip_ip_address": null,
      "voip_ip_subnet_mask": null,
      "voip_ip_default_gateway": null,
      "voip_ip_dns1": null,
      "voip_ip_dns2": null,
      "voip_ip_service_port": null,
      "voip_ip_vlan": null,
      "voip_ip_cvlan": null,
      "voip_ip_svlan": null,
      "voip_ip_tag_transform_mode": null,
      "iptv": "Disabled",
      "iptv_service_port": null,
      "iptv_vlan": null,
      "iptv_cvlan": null,
      "iptv_svlan": null,
      "iptv_tag_transform_mode": null,
      "iptv_upload_speed": null,
      "iptv_download_speed": null,
      "iptv_allowed_macs": null,
      "iptv_filtered_macs": null,
      "custom_template_name": null,
      "tr069": "Disabled",
      "tr069_profile": null,
      "tr069_device_id": null,
      "catv": "Not supported by ONU-Type",
      "administrative_status": "Enabled",
      "authorization_date": "2023-06-04 00:00:00",
      "is_synced_after_import": "0",
      "is_failed_resync_config": "0",
      "status": null,
      "last_status_change": null,
      "signal": null,
      "signal_1310": null,
      "signal_1490": null,
      "latitude": null,
      "longitude": null,
      "contact": "",
      "service_ports": [
        {
          "service_port": "348",
          "vlan": "20",
          "cvlan": "",
          "svlan": "",
          "tag_transform_mode": "translate",
          "upload_speed": "1G",
          "download_speed": "1G"
        }
      ],
      "ethernet_ports": [
        {
          "port": "eth_0/1",
          "admin_state": "Enabled",
          "mode": "Access",
          "dhcp": "No control",
          "vlan": "20",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/2",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/3",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/4",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        }
      ],
      "wifi_ports": [],
      "voip_ports": [],
      "applied_configuration_preset": {
        "preset_id": 5,
        "preset_name": "test preset",
        "is_reversible": true,
        "applied_at": "2026-07-23 06:51:54",
        "status": "active"
      }
    },
    {
      "unique_external_id": "test2",
      "pon_type": "gpon",
      "gpon_channel": "gpon",
      "sn": "ZTEGC171A71A",
      "name": "Test name2",
      "olt_id": "53",
      "olt_name": "OLT 1",
      "board": "1",
      "port": "4",
      "onu": "4",
      "onu_type_id": "2",
      "onu_type_name": "ZTE-F600",
      "zone_id": "1",
      "zone_name": "City Center",
      "address": null,
      "odb_name": "ODB 2",
      "odb_port": "",
      "mode": "Routing",
      "wan_mode": "Setup via ONU webpage",
      "ip_address": null,
      "subnet_mask": null,
      "default_gateway": null,
      "dns1": null,
      "dns2": null,
      "username": null,
      "password": null,
      "mgmt_ip_mode": "Inactive",
      "mgmt_ip_address": null,
      "mgmt_ip_subnet_mask": null,
      "mgmt_ip_default_gateway": null,
      "mgmt_ip_dns1": null,
      "mgmt_ip_dns2": null,
      "mgmt_ip_service_port": null,
      "mgmt_ip_vlan": null,
      "mgmt_ip_cvlan": null,
      "mgmt_ip_svlan": null,
      "mgmt_ip_tag_transform_mode": null,
      "voip_service": "Disabled",
      "voip_ip_mode": "DHCP",
      "voip_ip_address": null,
      "voip_ip_subnet_mask": null,
      "voip_ip_default_gateway": null,
      "voip_ip_dns1": null,
      "voip_ip_dns2": null,
      "voip_ip_service_port": null,
      "voip_ip_vlan": null,
      "voip_ip_cvlan": null,
      "voip_ip_svlan": null,
      "voip_ip_tag_transform_mode": null,
      "iptv": "OLT IPTV module disabled",
      "iptv_service_port": null,
      "iptv_vlan": null,
      "iptv_cvlan": null,
      "iptv_svlan": null,
      "iptv_tag_transform_mode": null,
      "iptv_upload_speed": null,
      "iptv_download_speed": null,
      "iptv_allowed_macs": null,
      "iptv_filtered_macs": null,
      "custom_template_name": null,
      "tr069": "Disabled",
      "tr069_profile": null,
      "tr069_device_id": null,
      "catv": "Enabled",
      "administrative_status": "Enabled",
      "authorization_date": "2021-08-30 00:00:00",
      "is_synced_after_import": 1,
      "is_failed_resync_config": 0,
      "status": null,
      "last_status_change": "2025-12-30 12:00:00",
      "signal": null,
      "signal_1310": null,
      "signal_1490": null,
      "latitude": null,
      "longitude": null,
      "contact": "",
      "service_ports": [
        {
          "service_port": "100",
          "vlan": "150",
          "cvlan": "",
          "svlan": "",
          "tag_transform_mode": "",
          "upload_speed": "1G",
          "download_speed": "1G"
        }
      ],
      "ethernet_ports": [
        {
          "port": "eth_0/1",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/2",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/3",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/4",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        }
      ],
      "wifi_ports": [],
      "voip_ports": [],
      "applied_configuration_preset": null
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get all ONUs GPS coordinates

https://{subdomain}.smartolt.com/api/onu/get_all_onus_gps_coordinates

Gets all the ONUs GPS coordinates for a specified OLT ID, board, PON port or zone. If no OLT ID, board, PON port or zone is specified, then all the ONUs GPS coordinates on all OLTs will be returned.

Maximum recommended calls for "Get all ONUs GPS coordinates": 3 per hour (calls are blocked after the limit is reached).

The response consists of:

  • ONU latitude
  • ONU longitude

It returns a 400 error code when:

  • no OLT was found for the provided OLT ID
  • no OLT ID was provided with board or PON port
  • no OLT ID or no board was provided with PON port
  • no Zone was found for the provided zone name

Parameters

NameInRequiredExampleDescription
olt_idintegerqueryNo1

(Int) The ID of the OLT for which to get the ONUs GPS coordinates. Leave empty if you want ONUs GPS coordinates from all OLTs

boardintegerqueryNo2

(Int) OLT board where the ONUs are placed. Leave it empty if you want ONUs GPS coordinates from all boards on the provided OLT ID

portintegerqueryNo4

(Int) OLT PON port where ONUs are placed. Leave it empty if you want ONUs GPS coordinates from all PON ports on the provided board

zonestringqueryNoCity Centre

(String) The zone where the ONUs are located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character. Leave it empty if you want ONUs GPS coordinates from all the zones

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_all_onus_gps_coordinates?olt_id=1&board=2&port=4&zone=City%20Centre' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "onus": [
    {
      "unique_external_id": "test1",
      "latitude": "41.22",
      "longitude": "33.5"
    },
    {
      "unique_external_id": "test2",
      "latitude": "41.20",
      "longitude": "32.88"
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get ONU status by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/get_onu_status/{onu_external_id}

๐Ÿ“ก Performs real-time data collection directly from the OLT
๐Ÿ”ง Designed for LIVE debugging and troubleshooting only

โ— Restrictions๐Ÿšซ DO NOT use this endpoint in:

  • automated polling scripts
  • monitoring loops
  • bulk data collection jobs

๐Ÿšซ DO NOT call this endpoint repeatedly for multiple ONUs

Use get_onu_status only when:

  • actively debugging a specific ONU
  • investigating a real-time issue reported by a user

For regular monitoring or integrations, use endpoints such as Get all onus statuses and cache the response in your system for 5 minutes.

Gets the ONU status for a specified ONU unique external ID.

ONU status returned can be:

  • Online
  • Power fail
  • LOS
  • Offline

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT wasn't able to process the command
  • ONU is saved for later authorization and doesn't have a status yet

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onu_status/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "onu_status": "Online",
  "last_status_change": "2025-12-30 12:00:00"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}
GET

Get ONU status history by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/get_onu_status_history/{onu_external_id}

Gets the status history of an ONU for a time period: how long the ONU was Online, LOS, Power fail, Offline or Log in, and how many times it went down.

The data comes from the SmartOLT database. This endpoint does not send commands to the OLT.

Time period

  • Leave from and to empty to get the last 24 hours.
  • Or send from and to together, as YYYY-MM-DD. Both days are included. from can be up to 365 days ago.
  • All times are in the time zone of your SmartOLT account. The response shows it in timezone.

Detail

  • If the period starts in the last 7 days, detail is transitions. You get each status period in periods.
  • If the period starts earlier, detail is daily. You get the seconds in each status per day in days.

Fields

  • summary.online_percent: the percentage of time Online. Time with no data (unknown) is not counted. It is null when there is no data.
  • summary.seconds and days[].seconds: seconds in each status: online, los, power_fail, offline, login, unknown.
  • interruptions: how many times the ONU went from Online to another status.
  • periods[].cause: olt_reboot when the status changed because the OLT rebooted, otherwise null.

It returns a 400 error code when:

  • no ONU was found for the provided ONU external ID
  • the dates are not valid (error code invalid_date_range)

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
fromstringqueryNo2026-09-01

(String) The first day, as YYYY-MM-DD. Send it together with to. Leave both empty to get the last 24 hours.

tostringqueryNo2026-09-30

(String) The last day, as YYYY-MM-DD. This day is included. It cannot be in the future.

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onu_status_history/{onu_external_id}?from=2026-09-01&to=2026-09-30' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OK (last 24 hours)โŒ„
application/json
{
  "onu_external_id": "ext-1001",
  "from": "2026-10-08 10:00:00",
  "to": "2026-10-09 10:00:00",
  "timezone": "Europe/Berlin",
  "detail": "transitions",
  "summary": {
    "online_percent": 98.26,
    "known_seconds": 86400,
    "seconds": {
      "online": 84900,
      "los": 1200,
      "power_fail": 300,
      "offline": 0,
      "login": 0,
      "unknown": 0
    },
    "interruptions": 2
  },
  "periods": [
    {
      "status": "online",
      "from": "2026-10-08 10:00:00",
      "to": "2026-10-08 22:10:00",
      "seconds": 43800,
      "cause": null
    },
    {
      "status": "los",
      "from": "2026-10-08 22:10:00",
      "to": "2026-10-08 22:30:00",
      "seconds": 1200,
      "cause": null
    },
    {
      "status": "online",
      "from": "2026-10-08 22:30:00",
      "to": "2026-10-09 03:00:00",
      "seconds": 16200,
      "cause": null
    },
    {
      "status": "power_fail",
      "from": "2026-10-09 03:00:00",
      "to": "2026-10-09 03:05:00",
      "seconds": 300,
      "cause": null
    },
    {
      "status": "online",
      "from": "2026-10-09 03:05:00",
      "to": "2026-10-09 10:00:00",
      "seconds": 24900,
      "cause": null
    }
  ],
  "status": true,
  "response_code": "success"
}
200200 - OK (daily, older period)โŒ„
application/json
{
  "onu_external_id": "ext-1001",
  "from": "2026-09-01 00:00:00",
  "to": "2026-09-03 00:00:00",
  "timezone": "Europe/Berlin",
  "detail": "daily",
  "summary": {
    "online_percent": 99.65,
    "known_seconds": 172800,
    "seconds": {
      "online": 172200,
      "los": 600,
      "power_fail": 0,
      "offline": 0,
      "login": 0,
      "unknown": 0
    },
    "interruptions": 1
  },
  "days": [
    {
      "date": "2026-09-01",
      "seconds": {
        "online": 85800,
        "los": 600,
        "power_fail": 0,
        "offline": 0,
        "login": 0,
        "unknown": 0
      },
      "interruptions": 1
    },
    {
      "date": "2026-09-02",
      "seconds": {
        "online": 86400,
        "los": 0,
        "power_fail": 0,
        "offline": 0,
        "login": 0,
        "unknown": 0
      },
      "interruptions": 0
    }
  ],
  "status": true,
  "response_code": "success"
}
400400 - Invalid datesโŒ„
application/json
{
  "status": false,
  "error": "Use from and to together as YYYY-MM-DD, from not after to, within the last 365 days.",
  "error_code": "invalid_date_range"
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get ONU signal by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/get_onu_signal/{onu_external_id}

Gets the ONU signal for a specified ONU unique external ID.

This endpoint is should be used only for getting fresh data for a limited number of ONUs between regular polling intervals.

To maintain system performance for all users, heavy usage may be subject to rate limiting.

โ— Restrictions****๐Ÿšซ DO NOT use this endpoint in:

  • automated polling scripts
  • monitoring loops
  • bulk data collection jobs

๐Ÿšซ DO NOT call this endpoint repeatedly for multiple ONUs

Use get_onu_signal only when:

  • actively debugging a specific ONT
  • investigating a real-time issue reported by a user

The response consists of:

  • ONU signal: 'Critical', 'Warning', 'Very good'
  • ONU signal value: 1490 signal / 1310 signal
  • ONU signal 1310 value
  • ONU signal 1490 value

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT wasn't able to process the command
  • ONU is saved for later authorization and doesn't have signal yet

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onu_signal/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "onu_signal": "Very good",
  "onu_signal_value": "-10.39 dBm / -10.74 dBm ",
  "onu_signal_1310": "-10.74 dBm",
  "onu_signal_1490": "-10.39 dBm"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}
GET

Get ONU details by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/get_onu_details/{onu_external_id}

Get ONU details for a specified ONU unique external ID.

The response consists of:

  • ONU name
  • ONU SN
  • ONU board, port, onu etc

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID

Important: Direct ONU link by External ID
Use this URL in your CRM/ERP to directly point to the ONU in SmartOLT:
https://{subdomain}.smartolt.com/onu/details/{onu_external_id}

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onu_details/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "onu_details": {
    "unique_external_id": "test2",
    "pon_type": "gpon",
    "gpon_channel": "gpon",
    "sn": "ZTEGC171A71A",
    "name": "Test name2",
    "olt_id": "53",
    "olt_name": "OLT 1",
    "board": "1",
    "port": "4",
    "onu": "4",
    "onu_type_id": "2",
    "onu_type_name": "ZTE-F600",
    "zone_id": "1",
    "zone_name": "City Center",
    "address": null,
    "odb_name": "ODB 2",
    "odb_port": "",
    "mode": "Routing",
    "wan_mode": "Setup via ONU webpage",
    "ip_address": null,
    "subnet_mask": null,
    "default_gateway": null,
    "dns1": null,
    "dns2": null,
    "username": null,
    "password": null,
    "mgmt_ip_mode": "Inactive",
    "mgmt_ip_address": null,
    "mgmt_ip_subnet_mask": null,
    "mgmt_ip_default_gateway": null,
    "mgmt_ip_dns1": null,
    "mgmt_ip_dns2": null,
    "mgmt_ip_service_port": null,
    "mgmt_ip_vlan": null,
    "mgmt_ip_cvlan": null,
    "mgmt_ip_svlan": null,
    "mgmt_ip_tag_transform_mode": null,
    "voip_service": "Disabled",
    "voip_ip_mode": "DHCP",
    "voip_ip_address": null,
    "voip_ip_subnet_mask": null,
    "voip_ip_default_gateway": null,
    "voip_ip_dns1": null,
    "voip_ip_dns2": null,
    "voip_ip_service_port": null,
    "voip_ip_vlan": null,
    "voip_ip_cvlan": null,
    "voip_ip_svlan": null,
    "voip_ip_tag_transform_mode": null,
    "iptv": "OLT IPTV module disabled",
    "iptv_service_port": null,
    "iptv_vlan": null,
    "iptv_cvlan": null,
    "iptv_svlan": null,
    "iptv_tag_transform_mode": null,
    "iptv_upload_speed": null,
    "iptv_download_speed": null,
    "iptv_allowed_macs": null,
    "iptv_filtered_macs": null,
    "custom_template_name": null,
    "tr069": "Disabled",
    "tr069_profile": null,
    "tr069_device_id": null,
    "catv": "Enabled",
    "administrative_status": "Enabled",
    "authorization_date": "2021-08-30 00:00:00",
    "is_synced_after_import": 1,
    "is_failed_resync_config": 0,
    "status": null,
    "last_status_change": "2025-12-30 12:00:00",
    "signal": null,
    "signal_1310": null,
    "signal_1490": null,
    "latitude": null,
    "longitude": null,
    "contact": "",
    "service_ports": [
      {
        "service_port": "100",
        "vlan": "150",
        "cvlan": "",
        "svlan": "",
        "tag_transform_mode": "",
        "upload_speed": "1G",
        "download_speed": "1G"
      }
    ],
    "ethernet_ports": [
      {
        "port": "eth_0/1",
        "admin_state": "Enabled",
        "mode": "LAN",
        "dhcp": "No control",
        "vlan": "",
        "allowed_vlans": ""
      },
      {
        "port": "eth_0/2",
        "admin_state": "Enabled",
        "mode": "LAN",
        "dhcp": "No control",
        "vlan": "",
        "allowed_vlans": ""
      },
      {
        "port": "eth_0/3",
        "admin_state": "Enabled",
        "mode": "LAN",
        "dhcp": "No control",
        "vlan": "",
        "allowed_vlans": ""
      },
      {
        "port": "eth_0/4",
        "admin_state": "Enabled",
        "mode": "LAN",
        "dhcp": "No control",
        "vlan": "",
        "allowed_vlans": ""
      }
    ],
    "wifi_ports": [],
    "voip_ports": [],
    "applied_configuration_preset": {
      "preset_id": 5,
      "preset_name": "test preset",
      "is_reversible": true,
      "applied_at": "2026-07-23 06:51:54",
      "status": "active"
    }
  }
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}
GET

Get ONUs details by SN

https://{subdomain}.smartolt.com/api/onu/get_onus_details_by_sn/{onu_sn}

Get ONU details for a specified SN.

This endpoint is should be used only for getting fresh data for a limited number of ONTs between regular polling intervals.

To maintain system performance for all users, heavy usage may be subject to rate limiting.

โ— Restrictions****๐Ÿšซ DO NOT use this endpoint in:

  • automated polling scripts
  • monitoring loops
  • bulk data collection jobs

๐Ÿšซ DO NOT call this endpoint repeatedly for multiple ONUs

Use get_onus_details_by_sn only when:

  • actively debugging a specific ONT
  • investigating a real-time issue reported by a user

The response consists of:

  • ONU name
  • ONU SN
  • ONU board, port, onu etc

It returns a 400 error code when:

  • no SN was provided

Important: Direct ONU link by External ID
Use this URL in your CRM/ERP to directly point to the ONU in SmartOLT:
https://{subdomain}.smartolt.com/onu/details/{onu_external_id}

Parameters

NameInRequiredExampleDescription
onu_snstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onus_details_by_sn/{onu_sn}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "onus": [
    {
      "unique_external_id": "test2",
      "pon_type": "gpon",
      "gpon_channel": "gpon",
      "sn": "ZTEGC171A71A",
      "name": "Test name2",
      "olt_id": "53",
      "olt_name": "OLT 1",
      "board": "1",
      "port": "4",
      "onu": "4",
      "onu_type_id": "2",
      "onu_type_name": "ZTE-F600",
      "zone_id": "1",
      "zone_name": "City Center",
      "address": null,
      "odb_name": "ODB 2",
      "odb_port": "",
      "mode": "Routing",
      "wan_mode": "Setup via ONU webpage",
      "ip_address": null,
      "subnet_mask": null,
      "default_gateway": null,
      "dns1": null,
      "dns2": null,
      "username": null,
      "password": null,
      "mgmt_ip_mode": "Inactive",
      "mgmt_ip_address": null,
      "mgmt_ip_subnet_mask": null,
      "mgmt_ip_default_gateway": null,
      "mgmt_ip_dns1": null,
      "mgmt_ip_dns2": null,
      "mgmt_ip_service_port": null,
      "mgmt_ip_vlan": null,
      "mgmt_ip_cvlan": null,
      "mgmt_ip_svlan": null,
      "mgmt_ip_tag_transform_mode": null,
      "voip_service": "Disabled",
      "voip_ip_mode": "DHCP",
      "voip_ip_address": null,
      "voip_ip_subnet_mask": null,
      "voip_ip_default_gateway": null,
      "voip_ip_dns1": null,
      "voip_ip_dns2": null,
      "voip_ip_service_port": null,
      "voip_ip_vlan": null,
      "voip_ip_cvlan": null,
      "voip_ip_svlan": null,
      "voip_ip_tag_transform_mode": null,
      "iptv": "OLT IPTV module disabled",
      "iptv_service_port": null,
      "iptv_vlan": null,
      "iptv_cvlan": null,
      "iptv_svlan": null,
      "iptv_tag_transform_mode": null,
      "iptv_upload_speed": null,
      "iptv_download_speed": null,
      "iptv_allowed_macs": null,
      "iptv_filtered_macs": null,
      "custom_template_name": null,
      "tr069": "Disabled",
      "tr069_profile": null,
      "tr069_device_id": null,
      "catv": "Enabled",
      "administrative_status": "Enabled",
      "authorization_date": "2021-08-30 00:00:00",
      "is_synced_after_import": 1,
      "is_failed_resync_config": 0,
      "status": null,
      "last_status_change": "2025-12-30 12:00:00",
      "signal": null,
      "signal_1310": null,
      "signal_1490": null,
      "latitude": null,
      "longitude": null,
      "contact": "",
      "service_ports": [
        {
          "service_port": "100",
          "vlan": "150",
          "cvlan": "",
          "svlan": "",
          "tag_transform_mode": "",
          "upload_speed": "1G",
          "download_speed": "1G"
        }
      ],
      "ethernet_ports": [
        {
          "port": "eth_0/1",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/2",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/3",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        },
        {
          "port": "eth_0/4",
          "admin_state": "Enabled",
          "mode": "LAN",
          "dhcp": "No control",
          "vlan": "",
          "allowed_vlans": ""
        }
      ],
      "wifi_ports": [],
      "voip_ports": [],
      "applied_configuration_preset": {
        "preset_id": 5,
        "preset_name": "test preset",
        "is_reversible": true,
        "applied_at": "2026-07-23 06:51:54",
        "status": "active"
      }
    }
  ]
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get ONU full status info by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/get_onu_full_status_info/{onu_external_id}

Gets the ONU full status info for a specified ONU unique external ID.

This endpoint is resource-intensive and should be used with caution.

To maintain system performance for all users, heavy usage may be subject to rate limiting.

โฑ๏ธ Average response time: ~5 seconds per request
๐Ÿ“ก Performs real-time data collection directly from the OLT
๐Ÿ”ง Designed for LIVE debugging and troubleshooting only

โ— Restrictions
๐Ÿšซ DO NOT use this endpoint in:

  • automated polling scripts
  • monitoring loops
  • bulk data collection jobs

๐Ÿšซ DO NOT call this endpoint repeatedly for multiple ONUs

Use get_onu_full_status_info only when:

  • actively debugging a specific ONT
  • investigating a real-time issue reported by a user

For regular monitoring or integrations, use endpoints such as Get all onus statuses and cache the response in your system for 5 minutes:

get_all_onus_statuses

ONU full status info contains info about:

  • Current status
  • Status history
  • Optical Tx, Rx signals
  • Ethernet interfaces
  • WAN status
  • MAC table
  • Other ONU info

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT wasn't able to process the command
  • ONU is saved for later authorization and doesn't have status info yet

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onu_full_status_info/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "full_status_info": "Copyright(C) Huawei Technologies Co., Ltd. 2002-2016. All rights reserved.\nLogin  Time : 2019-02-19 08:44:21+08:00\nLogout Time : 2019-02-19 08:44:23+08:00\nOptical status:\nModule type                            : GPON\nModule sub-type                        : CLASS B+\nRx optical power(dBm)                  : -23.37\nTx optical power(dBm)                  : 1.91\nTemperature(C)                         : 48\nOLT Rx ONT optical power(dBm)          : -28.54\nCATV Rx optical power(dBm)             : -\nONT-ID                  : 0\nControl flag            : active\nRun state               : online\nMatch state             : mismatch\nONT distance(m)         : 1945\nCPU occupation          : 1%\nManagement mode         : OMCI\nDescription             : ONU_Customer_name_zone_Zone_1_descr\nLast down cause         : dying-gasp\nLast up time            : 2019-02-15 07:50:06+08:00\nLast down time          : 2019-02-15 07:49:01+08:00\nLast dying gasp time    : 2019-02-15 07:49:01+08:00\nONT online duration     : 4 day(s), 0 hour(s), 54 minute(s), 24 second(s) \nInteroperability-mode   : ITU-T\nLine profile ID      : 1\nLine profile name    : SMARTOLT_FLEXIBLE_GPON\nMapping mode        :802.1p PRI\nService profile ID   : 34\nService profile name : HS8545M\nRing check switch                 : Enable\nRing port auto-shutdown           : Enable\nHistory:\nIndex               : 10\nUpTime              : 2019-02-15 07:50:02+08:00\nIndex               : 9\nUpTime              : 2019-02-15 07:46:20+08:00\nDownTime            : 2019-02-15 07:49:01+08:00\nDownCause           : PowerFail\nIndex               : 8\nUpTime              : 2019-02-14 17:55:00+08:00\nDownTime            : 2019-02-15 06:49:58+08:00\nDownCause           : PowerFail\nIndex               : 7\nUpTime              : 2019-02-14 01:24:53+08:00\nDownTime            : 2019-02-14 17:54:46+08:00\nDownCause           : ONT LOSi/LOBi alarm\nIndex               : 6\nUpTime              : 2019-02-10 22:20:26+08:00\nDownTime            : 2019-02-14 01:24:00+08:00\nDownCause           : PowerFail\nIndex               : 5\nUpTime              : 2019-02-07 09:44:07+08:00\nDownTime            : 2019-02-10 19:38:31+08:00\nDownCause           : PowerFail\nIndex               : 4\nUpTime              : 2019-02-02 02:36:32+08:00\nDownTime            : 2019-02-07 09:42:48+08:00\nDownCause           : PowerFail\nIndex               : 3\nUpTime              : 2019-02-01 21:50:01+08:00\nDownTime            : 2019-02-02 02:35:33+08:00\nDownCause           : PowerFail\nIndex               : 2\nUpTime              : 2019-01-27 16:48:24+08:00\nDownTime            : 2019-02-01 21:48:58+08:00\nDownCause           : PowerFail\nIndex               : 1\nUpTime              : 2019-01-26 22:16:42+08:00\nDownTime            : 2019-01-27 16:28:00+08:00\nDownCause           : PowerFail\nIndex                      : 1\nName                       : 1_INTERNET_R_VID_20\nService type               : Internet\nConnection type            : IP routed\nIPv4 Connection status     : Connected\nIPv4 access type           : PPPoE\nIPv4 address               : 10.13.1.178\nSubnet mask                : 255.255.255.255\nDefault gateway            : 192.168.38.1\nManage VLAN                : 20\nManage priority            : 0\nMAC address                : 0087-C6AA-082A\nIPv4 switch                : Enable\nIPv6 Connection status     : Invalid\nInterfaces status:\nONT-ID   ONT Port type Speed(Mbps)   Duplex   LinkState  RingStatus\n0         1         GE -             -        down       noloop    \n0         2         FE -             -        down       noloop    \n0         3         FE -             -        down       noloop    \n0         4         FE -             -        down       noloop    \nVoIP status:\nOnline MACs on this ONU:\nSRVPort  TYPE MAC            MAC TYPE F /S /P  ONTID VCI   VLAN ID\n4     -  gpon 0007-c49a-083a dynamic  0 /1 /2   0    1          20\n"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}
GET

Get ONU running config by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/get_running_config/{onu_external_id}

Gets the ONU running config from the OLT for a specified ONU unique external ID.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT wasn't able to process the command
  • ONU is saved for later authorization and doesn't have status info yet

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_running_config/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "running_config": "\n[MA5800V100R017: 5800]\n[gpon]\n  <gpon-0/1>\n interface gpon 0/1\n ont add 2 0 sn-auth \"485754439999999B\" omci ont-lineprofile-id 1 ont-srvprofile-id 34 desc \"ONU_Customer_Name_zone_Zone_1_descr__authd_20181219\" \n[bbs-config]\n  <bbs-config>\n service-port 4 vlan 20 gpon 0/1/2 ont 0 gemport 1 multi-service user-vlan 20 tag-transform translate inbound traffic-table index 12 outbound traffic-table index 34\n\nService-ports on this ONU:\n\n service-port 4 vlan 20 gpon 0/1/2 ont 0 gemport 1 multi-service user-vlan 20 tag-transform translate inbound traffic-table index 12 outbound traffic-table index 34\n\n"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}
GET

Get ONU signal graph by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/get_onu_signal_graph/{onu_external_id}/{graph_type}

Gets the ONU signal graph for a specified ONU unique external ID.

The graph_type can be:

  • hourly
  • daily
  • weekly
  • monthly
  • yearly

The response consists of:

  • Graph png image

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • ONU doesn't have signal graph yet

You can feed the response directly to an img tag in the src attribute with a Content-type header of "image/png".
Example:

PHP

header("Content-type: image/png");
echo $response_graph;

HTML

img src="link_to_your_method_where_you_call_the_api" alt="hourly signal not yet generated"

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
graph_typestringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onu_signal_graph/{onu_external_id}/{graph_type}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
text/plain
Graph image
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}
GET

Get ONU traffic graph by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/get_onu_traffic_graph/{onu_external_id}/{graph_type}

Gets the ONU traffic graph for a specified ONU unique external ID.

The graph_type can be:

  • hourly
  • daily
  • weekly
  • monthly
  • yearly

The response consists of:

  • Graph png image

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • ONU doesn't have traffic graph yet

You can feed the response directly to an img tag in the src attribute with a Content-type header of "image/png".
Example:

PHP

header("Content-type: image/png");
echo $response_graph;

HTML

img src="link_to_your_method_where_you_call_the_api" alt="hourly traffic not yet generated"

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
graph_typestringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onu_traffic_graph/{onu_external_id}/{graph_type}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
text/plain
Graph image
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}
GET

Get ONU speed profiles by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/get_onu_speed_profiles/{onu_external_id}

Get ONU speed profiles for a specified ONU unique external ID.

The response consists of:

  • ONU upload speed profile name
  • ONU download speed profile name

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onu_speed_profiles/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "upload_speed_profile_name": "10M",
  "download_speed_profile_name": "50M"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}
GET

Get ONU router hosts by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/get_onu_router_hosts/{onu_external_id}

Returns the list of LAN hosts (connected devices) currently seen by the ONU's router, read live from the CPE over TR-069.

๐Ÿ“ก Performs real-time data collection directly from the OLT
๐Ÿ”ง Designed for LIVE debugging and troubleshooting only

๐Ÿšซ DO NOT call this endpoint every time your CRM loads a page

โ— Restrictions๐Ÿšซ DO NOT use this endpoint in:

  • automated polling scripts
  • monitoring loops
  • bulk data collection jobs

๐Ÿšซ DO NOT call this endpoint repeatedly for multiple ONUs

Use get_onu_router_hosts only when:

  • actively debugging a specific ONU
  • investigating a real-time issue reported by a user

Only one call at a time: This endpoint allows a single in-flight request at once. If another call to it is already being processed, further calls return HTTP 429 with error_code: already_a_request_in_progress โ€” wait for the running call to finish before retrying.

The ONU must be online and TR-069 must be enabled and integrated on it; otherwise the device is treated as offline and the call fails.

Success response (status: true) contains response.hostlist, an object keyed by host index. Each host is the raw TR-069 Hosts.Host entry (fields such as HostName, IPAddress, MACAddress, Active, AddressSource, Layer2Interface, ...); available fields depend on the CPE.

Error codes (error_code in the {status:false, error, error_code} body):

  • specify_field (400) โ€” no onu_external_id supplied.
  • specify_valid_field (400) โ€” no ONU matches the supplied id.
  • already_a_request_in_progress (429) โ€” another call to this endpoint is already running; retry after it completes.
  • tr069_unable_to_process_command (400) โ€” TR-069 not enabled/integrated on the ONU, or the device is offline / did not respond.
  • forbidden (403) โ€” id is outside your restriction group, or the OLT subscription is not valid.

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onu_router_hosts/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "response": {
    "hostlist": {
      "1": {
        "HostName": "android-a1b2c3d4",
        "IPAddress": "192.168.1.20",
        "MACAddress": "AA:BB:CC:DD:EE:01",
        "Active": "true",
        "AddressSource": "DHCP",
        "Layer2Interface": "WiFi.SSID.1"
      },
      "2": {
        "HostName": "desktop-pc",
        "IPAddress": "192.168.1.21",
        "MACAddress": "AA:BB:CC:DD:EE:02",
        "Active": "true",
        "AddressSource": "DHCP",
        "Layer2Interface": "Ethernet.1"
      }
    }
  },
  "response_code": "success",
  "status": true
}
400400 - Device offline / TR-069 not availableโŒ„
application/json
{
  "status": false,
  "error": "The device is offline or could not process the command.",
  "error_code": "tr069_unable_to_process_command"
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Please specify a valid ONU external ID",
  "error_code": "specify_valid_field"
}
429429 - Another request already in progressโŒ„
application/json
{
  "status": false,
  "error": "There's already a request in progress, please try again later",
  "error_code": "already_a_request_in_progress"
}
GET

Get ONU MAC addresses by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/get_onu_macs/{onu_external_id}

Gets the MAC addresses that the OLT learned behind one ONU, for a specified ONU unique external ID.

๐Ÿ“ก This endpoint reads the data directly from the OLT. A call can take up to about 35 seconds. Use it for one ONU at a time.

Each MAC address has 12 lowercase hexadecimal characters with no separators, for example a4b1c2d3e4f5.

The response has verified: true only when the OLT answered. An empty mac_addresses list then means that the ONU has no MAC addresses. If the OLT did not answer, you get an error, not an empty list.

It returns a 400 error code when:

  • no ONU was found for the provided ONU external ID
  • the OLT is unreachable (error code olt_unreachable)
  • the OLT model does not support this read (error code olt_script_not_available)
  • the OLT did not accept the command (error code olt_unable_to_process_command)

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_onu_macs/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "onu_external_id": "ext-1001",
  "onu_id": 1001,
  "olt_id": 1,
  "verified": true,
  "mac_addresses": [
    "a4b1c2d3e4f5",
    "001122aabbcc"
  ],
  "total": 2,
  "status": true,
  "response_code": "success"
}
400400 - OLT unreachableโŒ„
application/json
{
  "status": false,
  "error": "OLT unreachable",
  "error_code": "olt_unreachable"
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: 100"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Search ONU by MAC address

https://{subdomain}.smartolt.com/api/onu/search_by_mac

Finds the ONU behind which the OLT learned a MAC address. This endpoint reads the data directly from the OLTs.

Limits (for your SmartOLT account, not for each API key):

  • With olt_id: one search every 10 seconds, and up to 100 searches per hour.
  • Without olt_id (all OLTs): one search every 60 seconds, and up to 10 searches per hour. The search can take up to about 4 minutes.
  • Only one search of each type can run at a time.
  • When you are over a limit, you get HTTP 429 with a Retry-After header.

How to read the result

  • verified is true only when all searched OLTs answered. If it is false and matches is empty, the MAC address can still be on an OLT that did not answer.
  • olts shows the result for each OLT: answered, skipped_unreachable, deadline, vendor_not_supported, subscription_expired or another failure.
  • matched_in_smartolt is false when the OLT has the MAC address on an ONU that is not in SmartOLT.
  • restricted is true when your API key cannot see that ONU. The ONU position is then null.

Only Huawei, ZTE and FiberHome OLTs are supported.

It returns a 400 error code when:

  • no MAC address was provided (error code specify_mac_address)
  • the MAC address is not valid (error code specify_valid_mac_address)
  • the OLT vendor is not supported (error code olt_vendor_not_supported)
  • the OLT with the provided olt_id did not answer (error code olt_unreachable)

Parameters

NameInRequiredExampleDescription
mac_addressstringqueryYesa4:b1:c2:d3:e4:f5

(String) The MAC address to find. You can use :, - or . as separators, or no separators.

olt_idintegerqueryNo1

(Int) The ID of the OLT to search. Leave it empty to search all OLTs. A search of all OLTs is slower and has a lower limit.

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/search_by_mac?mac_address=a4%3Ab1%3Ac2%3Ad3%3Ae4%3Af5&olt_id=1' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OK (one OLT)โŒ„
application/json
{
  "mac_address": "a4b1c2d3e4f5",
  "verified": true,
  "olts_queried": 1,
  "olts_answered": 1,
  "olts": [
    {
      "olt_id": 1,
      "olt_name": "OLT-A",
      "status": "answered"
    }
  ],
  "matches": [
    {
      "olt_id": 1,
      "olt_name": "OLT-A",
      "mac_address": "a4b1c2d3e4f5",
      "pon_type": "gpon",
      "frame": 0,
      "board": 0,
      "port": 5,
      "onu": 15,
      "vlan": 100,
      "restricted": false,
      "matched_in_smartolt": true,
      "onu_id": 1001,
      "onu_external_id": "ext-1001",
      "sn": "HWTC00000015"
    }
  ],
  "total": 1,
  "status": true,
  "response_code": "success"
}
200200 - OK (all OLTs, one did not answer)โŒ„
application/json
{
  "mac_address": "a4b1c2d3e4f5",
  "verified": false,
  "olts_queried": 2,
  "olts_answered": 1,
  "olts": [
    {
      "olt_id": 1,
      "olt_name": "OLT-A",
      "status": "answered"
    },
    {
      "olt_id": 2,
      "olt_name": "OLT-B",
      "status": "skipped_unreachable"
    }
  ],
  "matches": [],
  "total": 0,
  "status": true,
  "response_code": "success"
}
400400 - Invalid MAC addressโŒ„
application/json
{
  "status": false,
  "error": "Please specify a valid MAC",
  "error_code": "specify_valid_mac_address"
}
429429 - Too many searchesโŒ„
application/json
{
  "status": false,
  "error": "MAC search can run at most once every 60s. Retry in 42s.",
  "error_code": "mac_search_fanout_min_interval"
}
POST

Save OLTs config

https://{subdomain}.smartolt.com/api/system/save_config

The request returns succesfully if the OLTs config was saved successfully.

It returns a 400 error code when:

  • OLT was unable to process the command

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/system/save_config' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "OLTs config saved"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get all ONU authorization presets by OLT unique ID

https://{subdomain}.smartolt.com/api/onu/get_authorization_presets

Returns all ONU authorization presets for a specified OLT unique ID.

What the response tells you

criteria is what the preset matches on. applies is what it will configure:

  • Names, not ids, for zone / splitter / ONU type / speed profiles / template.
  • odb_port_mode โ€” null if the preset sets no splitter, "none" if it attaches the ONU to the splitter without a port, "auto" if a free port is picked at authorization time. A preset in auto mode rejects a caller-supplied odb_port; one in none mode accepts it.
  • sets_tr069, sets_wifi, sets_wan, sets_web_credentials, sets_mgmt_ip โ€” booleans only. The underlying credentials, WiFi config and PPPoE password are never selected by this query, so they cannot leak through this endpoint. Each flag mirrors the condition the matching apply step actually uses, so a true means the step will really run.

Presets are filtered by the API key's zone and VLAN restrictions: one pointing at a zone or
VLAN outside your scope is dropped rather than disclosing its name or id.

Parameters

NameInRequiredExampleDescription
olt_idstringqueryYes{{olt_id}}

OLT ID

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_authorization_presets?olt_id={{olt_id}}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "response": {
    "authorization_presets": [
      {
        "id": 31,
        "name": "Residential FTTH",
        "description": "Standard residential profile",
        "olt_id": 90,
        "is_default": false,
        "criteria": {
          "sn_pattern": "HWTC",
          "board": "1",
          "port": "0",
          "pon_type": "gpon",
          "channel_type": "gpon",
          "onu_type_name": null
        },
        "applies": {
          "vlan": 10,
          "zone_name": "Downtown",
          "odb_name": "ODB-Central-01",
          "odb_port_mode": "auto",
          "onu_type_name": null,
          "fallback_onu_type_name": "110",
          "upload_speed_name": "1G",
          "download_speed_name": "100M",
          "custom_template_name": null,
          "mode": "Routing",
          "name_pattern": "FTTH {sn}",
          "comment_pattern": "{olt} b{board}/p{port}",
          "sets_tr069": true,
          "sets_wifi": true,
          "sets_wan": true,
          "sets_web_credentials": true,
          "sets_mgmt_ip": true
        }
      },
      {
        "id": 32,
        "name": "Bridged business",
        "description": "",
        "olt_id": 90,
        "is_default": true,
        "criteria": {
          "sn_pattern": null,
          "board": null,
          "port": null,
          "pon_type": "gpon",
          "channel_type": "gpon",
          "onu_type_name": null
        },
        "applies": {
          "vlan": 25,
          "zone_name": "Downtown",
          "odb_name": null,
          "odb_port_mode": null,
          "onu_type_name": null,
          "fallback_onu_type_name": "F670LV9.0",
          "upload_speed_name": null,
          "download_speed_name": null,
          "custom_template_name": null,
          "mode": "Bridging",
          "name_pattern": null,
          "comment_pattern": null,
          "sets_tr069": false,
          "sets_wifi": false,
          "sets_wan": false,
          "sets_web_credentials": false,
          "sets_mgmt_ip": false
        }
      }
    ]
  },
  "response_code": "success",
  "status": true
}
400400 - Feature flag offโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: ONU authorization presets are not enabled for this instance.",
  "error_code": "authorization_presets_not_enabled"
}
GET

Get all ONU authorization presets applicable to a specific ONU SN

https://{subdomain}.smartolt.com/api/onu/get_authorization_presets

Returns all ONU authorization presets for a specified OLT unique ID applicable to a specified ONU SN.

Applicability

Send any of sn, board, port and the response also scores each preset against that
ONU. Each preset then gains:

  • matches โ€” the same accept/reject verdict authorize_onu will apply
  • match_score โ€” how specific the match is (null when matches is false)

and the response gains best_match_preset_id โ€” the preset that would win.

Omit all three and those three fields are absent entirely, rather than guessed. Test for
their presence rather than for a falsy value.

Scoring: SN pattern +200; board and port +100; board or port alone +50; neither +1;
pon_type +10; ONU type +5. Ties break on the default preset, then the lowest id.

board and port must be non-negative integers; anything else is rejected with
incorrect_field_value rather than silently scoring against a different subject.

What the response tells you

criteria is what the preset matches on. applies is what it will configure:

  • Names, not ids, for zone / splitter / ONU type / speed profiles / template.
  • odb_port_mode โ€” null if the preset sets no splitter, "none" if it attaches the ONU to the splitter without a port, "auto" if a free port is picked at authorization time. A preset in auto mode rejects a caller-supplied odb_port; one in none mode accepts it.
  • sets_tr069, sets_wifi, sets_wan, sets_web_credentials, sets_mgmt_ip โ€” booleans only. The underlying credentials, WiFi config and PPPoE password are never selected by this query, so they cannot leak through this endpoint. Each flag mirrors the condition the matching apply step actually uses, so a true means the step will really run.

Presets are filtered by the API key's zone and VLAN restrictions: one pointing at a zone or
VLAN outside your scope is dropped rather than disclosing its name or id.

Typical flow

Call this with the SN, board and port from the unconfigured list, take
best_match_preset_id, and pass it to authorize_onu.

Check applies on the chosen preset before building the authorize request โ€” every field
listed there must be omitted from your call, or it comes back as
authorization_preset_conflicting_parameter.

Parameters

NameInRequiredExampleDescription
olt_idstringqueryYes{{olt_id}}

OLT ID

snstringqueryNo{{sn}}

(String) SN of the ONU you intend to authorize.

boardintegerqueryNo{{board}}

(Int) OLT board where the ONU is placed.

portintegerqueryNo{{port}}

(Int) OLT PON port where ONU is placed.

pon_typestringqueryNogpon

(Optional, String) gpon | epon

onu_typestringqueryNo110

(Optional, String) ONU type name

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_authorization_presets?olt_id={{olt_id}}&sn={{sn}}&board={{board}}&port={{port}}&pon_type=gpon&onu_type=110' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "response": {
    "authorization_presets": [
      {
        "id": 31,
        "name": "Residential FTTH",
        "description": "Standard residential profile",
        "olt_id": 90,
        "is_default": false,
        "criteria": {
          "sn_pattern": "HWTC",
          "board": "1",
          "port": "0",
          "pon_type": "gpon",
          "channel_type": "gpon",
          "onu_type_name": null
        },
        "applies": {
          "vlan": 10,
          "zone_name": "Downtown",
          "odb_name": "ODB-Central-01",
          "odb_port_mode": "auto",
          "onu_type_name": null,
          "fallback_onu_type_name": "110",
          "upload_speed_name": "1G",
          "download_speed_name": "100M",
          "custom_template_name": null,
          "mode": "Routing",
          "name_pattern": "FTTH {sn}",
          "comment_pattern": "{olt} b{board}/p{port}",
          "sets_tr069": true,
          "sets_wifi": true,
          "sets_wan": true,
          "sets_web_credentials": true,
          "sets_mgmt_ip": true
        },
        "matches": true,
        "match_score": 310
      },
      {
        "id": 32,
        "name": "Bridged business",
        "description": "",
        "olt_id": 90,
        "is_default": true,
        "criteria": {
          "sn_pattern": null,
          "board": null,
          "port": null,
          "pon_type": "gpon",
          "channel_type": "gpon",
          "onu_type_name": null
        },
        "applies": {
          "vlan": 25,
          "zone_name": "Downtown",
          "odb_name": null,
          "odb_port_mode": null,
          "onu_type_name": null,
          "fallback_onu_type_name": "F670LV9.0",
          "upload_speed_name": null,
          "download_speed_name": null,
          "custom_template_name": null,
          "mode": "Bridging",
          "name_pattern": null,
          "comment_pattern": null,
          "sets_tr069": false,
          "sets_wifi": false,
          "sets_wan": false,
          "sets_web_credentials": false,
          "sets_mgmt_ip": false
        },
        "matches": true,
        "match_score": 11
      }
    ],
    "best_match_preset_id": 31
  },
  "response_code": "success",
  "status": true
}
400400 - Board is not an integerโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Invalid value for board",
  "error_code": "incorrect_field_value"
}
POST

Authorize ONU using an authorization preset

https://{subdomain}.smartolt.com/api/onu/authorize_onu

Authorizes an ONU using an authorization preset.

Identify the preset by authorization_preset_id (preferred) or authorization_preset_name.
Send both and they must agree โ€” names are compared case-insensitively, and a duplicated name
returns ambiguous_authorization_preset_name.

olt_id, pon_type and sn are always required. pon_type is validated before the
preset is resolved, so an invalid one reports incorrect_pon_type even if the preset id is
also wrong.

Online vs offline

Send board and port and the ONU is configured on the OLT immediately (online) โ€” expect
this call to take tens of seconds. Omit them and the ONU is recorded for configuration when it
appears (offline).

A preset carrying TR-069, management-IP or web-credential settings only applies those fully
on the online path โ€” they need a provisioned ONU. An offline call still returns success
while applying just the parts that do not require one. WiFi and WAN settings are stored
either way.

Fields the preset leaves open

Anything the preset does not set may be supplied and is validated normally โ€” typically
name, address_or_comment, contact, onu_external_id, latitude, longitude, and any of
vlan / cvlan / svlan / zone / odb / odb_port / speed profiles / custom_profile /
onu_type the preset happens to leave open.

If the preset auto-detects the ONU type, supply onu_type โ€” your value wins over the preset's
fallback type. With neither, the call fails with specify_onu_type.

Preset zones are access-checked

A preset that would place the ONU into a zone (or onto an splitter in a zone) outside a restricted
key's scope is refused with 403 / forbidden, exactly as a caller-supplied zone would be.

Parameters

NameInRequiredExampleDescription
olt_idintegerbodyYes90

(Int) The ID of the OLT on which the ONU should be authorized

pon_typestringbodyYesgpon

(String) ONU PON type. Allowed values: gpon, epon

snstringbodyYesHWTC12345678

(String) ONU SN

authorization_preset_idintegerbodyYes31

(Int) The ID of the authorization preset to apply

authorization_preset_namestringbodyNoResidential FTTH

Optional alongside the preset ID - if sent, the two must refer to the same authorization preset

boardintegerbodyNo1

(Int) OLT board where the ONU is placed. Leave it empty if you don't know yet

portintegerbodyNo0

(Int) OLT PON port where ONU is placed. Leave it empty if you don't know yet

onu_external_idstringbodyNoSUB-00042

(String) ONU unique external ID. The ONU external ID can contain only alphanumeric characters

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/authorize_onu' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode olt_id=90 \
  --data-urlencode pon_type=gpon \
  --data-urlencode sn=HWTC12345678 \
  --data-urlencode authorization_preset_id=31 \
  --data-urlencode 'authorization_preset_name=Residential FTTH' \
  --data-urlencode board=1 \
  --data-urlencode port=0 \
  --data-urlencode onu_external_id=SUB-00042

Saved responses

200200 - OKโŒ„
application/json
{
  "response": "ONU configuration saved",
  "response_code": "success",
  "status": true
}
400400 - A parameter was sent that this preset already setsโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: The authorization preset already sets vlan. Remove it from the request or use a preset that does not set it.",
  "error_code": "authorization_preset_conflicting_parameter"
}
400400 - ONU doesn't match the preset's criteriaโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: This ONU does not match the authorization preset criteria.",
  "error_code": "onu_does_not_match_authorization_preset"
}
POST

Authorize ONU

https://{subdomain}.smartolt.com/api/onu/authorize_onu

Authorizes an ONU on the provided OLT. If board or port are left empty then the ONU is saved for later authorization. The ONU type name must be one defined in SmartOLT ONU Types section.
The request returns succesfully if the ONU was authorized successfully.

It returns a 400 error code when:

  • no OLT ID was provided
  • no OLT was found for the provided OLT ID
  • no ONU PON type or a wrong ONU PON type was provided
  • no ONU SN/MAC was provided
  • the SN/MAC is in the wrong format
  • no VLAN-ID was provided
  • no ONU type was provided
  • no ONU type was found for the provided ONU type name
  • no Zone was provided
  • the Zone is in the wrong format
  • the ODB (Splitter) is in the wrong format
  • no Name was provided
  • the Name is in the wrong format
  • the Address or Comment is in the wrong format
  • no ONU mode or a wrong ONU mode was provided
  • the Custom profile is in the wrong format
  • the ONU external ID is in the wrong format
  • the ONU external ID is already existing
  • OLT was unable to process the command

The following messages are 400 error code messages examples and may vary in future versions:

  • ONU authorization in progress by other user
  • The selected VLAN was removed or you have a restriction on using it
  • PON port is full or the board/port is incorrect. Please delete unused ONUs from this PON port in order to add new ones or enter the correct board/port.
  • PON port is full or the board/port or GPON channel (G/XG/XGS) is incorrect. Please delete unused ONUs from this PON port in order to add new ones or enter the correct board/port.
  • The OLT is not responding to SNMP queries

Parameters

NameInRequiredExampleDescription
olt_idintegerbodyYes1

(Int) The ID of the OLT on which the ONU should be authorized

pon_typestringbodyYesgpon

(String) ONU PON type. Allowed values: gpon, epon

gpon_channelstringbodyNogpon

(String) GPON channel. Allowed values: gpon, xgpon, xgspon

epon_channelstringbodyNoepon

(String) EPON channel. Allowed values: epon, 10gepon

boardintegerbodyNo2

(Int) OLT board where the ONU is placed. Leave it empty if you don't know yet

portintegerbodyNo3

(Int) OLT PON port where ONU is placed. Leave it empty if you don't know yet

snstringbodyYesZTEGC7E230E4

(String) ONU SN

onu_typestringbodyYesZTE-F660V6.0

(String) ONU type

custom_profilestringbodyNoโ€”

(String) Custom profile - THIS IS NOT THE SPEED PROFILE (the default speed profiles will be used, if you wish to change them you will need to make a separate API call after authorization). The custom profile name should not contain whitespaces

onu_modestringbodyYesRouting

(String) ONU mode. Allowed values: Routing, Bridging

cvlanintegerbodyNo101

(Int) ONU CVLAN-ID

svlanintegerbodyNo102

(Int) ONU SVLAN-ID

tag_transform_modestringbodyNotranslate

(String) Tag-transform mode. Allowed values: default, translate, translate-and-add

use_other_all_tls_vlanintegerbodyNo1

(Int) Use "other-all" TLS VLAN. Allowed values: 0, 1

vlanintegerbodyNo100

(Int) ONU VLAN-ID. If not specified, the default VLAN-ID for this PON port is used. If there is no default VLAN-ID defined, this parameter is required

zonestringbodyYesCity Centre

(String) The zone where the ONU is located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character

odbstringbodyNoSplitter325

(String) Splitter. The Splitter can contain only alphanumeric characters, spaces, underscore and the dash (-) character

namestringbodyYesJohn Doe

(String) Name. The Name can contain only alphanumeric characters, spaces and the following characters: @#$&()-`.+,/_

address_or_commentstringbodyNoAvenue 9

(String) Address or comment. The Address or Comment can contain only alphanumeric characters, spaces and the following characters: @#$&()-`.+,/_

onu_external_idstringbodyNotest

(String) ONU unique external ID. The ONU external ID can contain only alphanumeric characters

upload_speed_profile_namestringbodyNo50M

(String) Upload speed profile name

download_speed_profile_namestringbodyNo100M

(String) Download speed profile name

sectorstringbodyNoNorth Branch

(String) Sector name, optional. Create sectors in the SmartOLT interface first, under Settings โ†’ Sectors.

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/authorize_onu' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode olt_id=1 \
  --data-urlencode pon_type=gpon \
  --data-urlencode gpon_channel=gpon \
  --data-urlencode epon_channel=epon \
  --data-urlencode board=2 \
  --data-urlencode port=3 \
  --data-urlencode sn=ZTEGC7E230E4 \
  --data-urlencode onu_type=ZTE-F660V6.0 \
  --data-urlencode onu_mode=Routing \
  --data-urlencode cvlan=101 \
  --data-urlencode svlan=102 \
  --data-urlencode tag_transform_mode=translate \
  --data-urlencode use_other_all_tls_vlan=1 \
  --data-urlencode vlan=100 \
  --data-urlencode 'zone=City Centre' \
  --data-urlencode odb=Splitter325 \
  --data-urlencode 'name=John Doe' \
  --data-urlencode 'address_or_comment=Avenue 9' \
  --data-urlencode onu_external_id=test \
  --data-urlencode upload_speed_profile_name=50M \
  --data-urlencode download_speed_profile_name=100M \
  --data-urlencode 'sector=North Branch'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU configuration saved"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU SN"
}
POST

Move ONU by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/move/{onu_external_id}

Move ONU for a specified ONU unique external ID

The request returns succesfully if the ONU was moved successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no OLT ID was provided
  • no OLT was found for the provided OLT ID
  • no board was provided
  • the provided board does not exist on the provided OLT
  • no port was provided
  • the provided port does not exist on the provided OLT board
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
olt_idintegerbodyYes1

(Int) The OLT ID to which the ONU will be moved

boardintegerbodyYes1

(Int) The board to which the ONU will be moved. It must be an existing board from the provided OLT

portintegerbodyYes2

(Int) The port to which the ONU will be moved. It must be an existing port from the provided OLT board

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/move/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode olt_id=1 \
  --data-urlencode board=1 \
  --data-urlencode port=2

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU was moved"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - OLT wasn't able to process commandโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: OLT wasn't able to process the command"
}
400400 - Specify the OLT IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the OLT ID"
}
400400 - The provided board does not exist on the provided OLTโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify a valid board from the OLT"
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}
POST

Update ONU PON channel by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/update_pon_channel/{onu_external_id}

Update ONU PON channel for a specified ONU unique external ID

The request returns succesfully if the new ONU PON channel was saved successfully.
It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
pon_channelstringbodyYesxgpon

(String) PON channel. Allowed values: gpon, xgpon, xgspon, epon, 10gepon

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/update_pon_channel/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode pon_channel=xgpon

Saved responses

200200 - OKโŒ„
application/json
{
  "response": "GPON channel changed to XG-PON for ONU with ONU external ID test",
  "response_code": "success",
  "status": true
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Update ONU SN/MAC by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/update_sn/{onu_external_id}

Update ONU SN/MAC for a specified ONU unique external ID

The request returns succesfully if the new ONU SN/MAC was saved successfully.
It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no new SN/MAC was provided
  • the SN/MAC is in the wrong format
  • the SN/MAC is already assigned to another ONU
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
new_snstringbodyYesZTEGC7E230E7

(String) New SN or MAC

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/update_sn/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode new_sn=ZTEGC7E230E7

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "MAC/SN updated for ONU with ONU external ID test"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Incorrect format for SN/MACโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: The SN field must contain 12 uppercase alphanumeric characters"
}
400400 - OLT wasn't able to process commandโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: OLT wasn't able to process the command"
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}
400400 - Specify the new SN or MACโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the new SN/MAC"
}
POST

Update ONU type by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/change_onu_type/{onu_external_id}

Update ONU type for a specified ONU unique external ID

The request returns succesfully if the ONU type was changed successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no new ONU type was provided
  • no ONU type was found with the given ONU type name
  • the ONU type PON type is not compatible with the ONU
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
onu_typestringbodyYesZTE-F660V6.0

(String) ONU type

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/change_onu_type/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode onu_type=ZTE-F660V6.0

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU type changed for ONU with ONU external ID test"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Specify the new ONU typeโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU type"
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}
400400 - No ONU type was found with the given nameโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU type was found with the name ZTE-G"
}
400400 - OLT wasn't able to process commandโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: OLT wasn't able to process the command"
}
POST

Update ONU custom profile by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/change_custom_profile/{onu_external_id}

Update ONU custom profile for a specified ONU unique external ID

The request returns succesfully if the ONU custom profile was changed successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no new ONU custom profile was provided
  • no ONU custom profile was found with the given custom profile name
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
custom_profilestringbodyYesGeneric_1

(String) Custom profile name

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/change_custom_profile/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode custom_profile=Generic_1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU custom profile changed for ONU with ONU external ID test"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
GET

Get ONU configuration presets

https://{subdomain}.smartolt.com/api/onu/get_configuration_presets

List every configuration preset the API key can see.

Presets are returned in OLT-then-name order. Only presets belonging to OLTs the key has access to are included. Deleted presets, and presets whose OLT has been deleted, are never returned.

A configuration preset is a reusable set of ONU settings defined per OLT (optionally narrowed to a board/port). Applying a preset writes those settings to the ONU and pushes them to the OLT. A preset marked as reversible records what it changed, so it can later be removed and the previous values restored. A non-reversible (one-time) preset is applied once and previous values cannot be restored.

Optional query parameter

  • olt_id โ€” return only the presets belonging to that OLT.

Fields

  • board / port โ€” null when the preset applies to the whole OLT, otherwise the board/port it is narrowed to.
  • is_reversible โ€” reversible presets can be removed later (remove_configuration_preset) and are reported in applied_configuration_preset. One-time presets apply their settings and keep no record.
  • enforced_settings โ€” the setting groups this preset governs, each as {key, rows} in a canonical order (e.g. main_vlan, catv, tr069). rows are RESOLVED display lines โ€” {label, value} with IDs turned into names (VLAN, speed profile, TR-069 profile). A group can expand to several rows (e.g. tr069 โ†’ mode, profile, interface). Secrets (WiFi/PPPoE/web passwords) are never read or returned.

Example request

curl --request GET \
  --url 'https://{subdomain}.smartolt.com/api/onu/get_configuration_presets' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "response": {
    "configuration_presets": [
      {
        "id": 2,
        "name": "Residential",
        "description": "",
        "olt_id": 10,
        "olt_name": "Huawei",
        "board": null,
        "port": null,
        "is_reversible": false,
        "enforced_settings": [
          {
            "key": "catv",
            "rows": [
              {
                "label": "CATV",
                "value": "Disabled"
              }
            ]
          },
          {
            "key": "tr069",
            "rows": [
              {
                "label": "TR-069 mode and profile",
                "value": "Enabled"
              },
              {
                "label": "TR069 Profile",
                "value": "SmartOLT"
              },
              {
                "label": "Interface",
                "value": "Mgmt IP interface"
              }
            ]
          }
        ]
      },
      {
        "id": 3,
        "name": "test",
        "description": "",
        "olt_id": 10,
        "olt_name": "Huawei",
        "board": null,
        "port": null,
        "is_reversible": false,
        "enforced_settings": [
          {
            "key": "main_vlan",
            "rows": [
              {
                "label": "Main VLAN",
                "value": "VLAN 10"
              }
            ]
          }
        ]
      },
      {
        "id": 4,
        "name": "test 2",
        "description": "",
        "olt_id": 10,
        "olt_name": "Huawei",
        "board": null,
        "port": null,
        "is_reversible": true,
        "enforced_settings": [
          {
            "key": "onu_mode",
            "rows": [
              {
                "label": "ONU mode",
                "value": "Routing"
              }
            ]
          }
        ]
      },
      {
        "id": 7,
        "name": "test one time",
        "description": "",
        "olt_id": 90,
        "olt_name": "ZTE",
        "board": null,
        "port": null,
        "is_reversible": false,
        "enforced_settings": [
          {
            "key": "main_vlan",
            "rows": [
              {
                "label": "Main VLAN",
                "value": "VLAN 25"
              }
            ]
          }
        ]
      },
      {
        "id": 5,
        "name": "test preset",
        "description": "",
        "olt_id": 90,
        "olt_name": "ZTE",
        "board": null,
        "port": null,
        "is_reversible": true,
        "enforced_settings": [
          {
            "key": "main_vlan",
            "rows": [
              {
                "label": "Main VLAN",
                "value": "VLAN 20"
              }
            ]
          },
          {
            "key": "catv",
            "rows": [
              {
                "label": "CATV",
                "value": "Disabled"
              }
            ]
          }
        ]
      }
    ]
  },
  "status": true,
  "response_code": "success"
}
POST

Apply configuration preset to an ONU by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/apply_configuration_preset/{onu_external_id}

Applies a configuration preset to the ONU and pushes the resulting configuration to the OLT.

Runs synchronously and returns the final outcome. If the OLT push fails, the preset application is rolled back automatically and the error is returned.

Identify the preset by configuration_preset_id or configuration_preset_name (at least one required). If you send both and they point at different presets the request is rejected with configuration_preset_id_name_mismatch.

The preset is always resolved against the presets applicable to this ONU, so a preset belonging to a different OLT/board/port is rejected with configuration_preset_not_applicable.

Path parameters

ParameterRequiredDescription
onu_external_idyesThe ONU external ID

Body parameters (application/x-www-form-urlencoded)

ParameterRequiredDescription
configuration_preset_idone of the twoID of an applicable preset
configuration_preset_nameone of the twoName of an applicable preset

Errors

configuration_preset_id_or_name_required, configuration_preset_not_applicable, configuration_preset_id_name_mismatch, onu_busy (409), plus any OLT error returned while pushing the configuration.

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
configuration_preset_namestringbodyNoResidential

Required if configuration_preset_id is not sent. Name of an applicable preset.

configuration_preset_idstringbodyNo5

Required if configuration_preset_name is not sent. ID of an applicable preset.

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/apply_configuration_preset/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode configuration_preset_name=Residential \
  --data-urlencode configuration_preset_id=5

Saved responses

200200 - OKโŒ„
application/json
{
  "response": "ONU configuration preset applied",
  "response_code": "success",
  "status": true
}
400400 - Preset not applicable to this ONUโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: The specified configuration preset does not exist or is not applicable to this ONU.",
  "error_code": "configuration_preset_not_applicable"
}
409409 - ONU busyโŒ„
application/json
{
  "status": false,
  "error": "This ONU has another operation in progress; please try again shortly.",
  "error_code": "onu_busy"
}
POST

Remove configuration preset from an ONU by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/remove_configuration_preset/{onu_external_id}

Removes the configuration preset currently applied to the ONU, restoring the settings that were in place before it was applied, and pushes the result to the OLT.

Runs synchronously and returns the final outcome.

There is no preset parameter: the endpoint operates on whichever preset is currently applied on the ONU. If the ONU has no applied preset โ€” or the applied preset was a one-time (non-reversible) preset, which by definition cannot be undone โ€” the call returns preset_application_not_found.

Path parameters

ParameterRequiredDescription
onu_external_idyesThe ONU external ID

Errors

preset_application_not_found, onu_busy (409), plus any OLT error returned while pushing the configuration.

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/remove_configuration_preset/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "response": "ONU configuration preset reversed",
  "response_code": "success",
  "status": true
}
400400- Nothing to removeโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: This ONU has no configuration preset applied that can be removed.",
  "error_code": "preset_application_not_found"
}
POST

Apply configuration preset on multiple ONUs by ONU unique external IDs

https://{subdomain}.smartolt.com/api/onu/bulk_apply_configuration_preset

Applies a configuration preset to several ONUs in one call.

This endpoint is asynchronous. It validates each ONU, queues the work as a batch action and returns immediately โ€” the response tells you what was accepted, not what the OLT did.

The response is a list keyed by ONU external id. Accepted ONUs report that the action is being processed; every other ONU carries the reason it was skipped. Duplicate ids in one call are collapsed, and an ONU that already has this action queued is not queued twice.

Per-ONU skip reasons include: preset not applicable to that ONU, the ONU already has a preset applied, and an action already queued for it.

Body parameters (application/x-www-form-urlencoded)

ParameterRequiredDescription
onus_external_idsyesComma separated ONU external IDs, maximum 10 000
configuration_preset_idone of the twoID of the preset to apply
configuration_preset_nameone of the twoName of the preset to apply โ€” resolved per ONU

Parameters

NameInRequiredExampleDescription
onus_external_idsstringbodyYesONU001,ONU002,ONU003

(String) Comma separated list of ONU unique external IDs. A maximum of 10 000 ONU unique external IDs are allowed

configuration_preset_namestringbodyNoResidential

Required if configuration_preset_id is not sent. Only matches ONUs on the preset's own OLT/board/port.

configuration_preset_idstringbodyNo5

Required if configuration_preset_name is not sent. Only matches ONUs on the preset's own OLT/board/port.

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/bulk_apply_configuration_preset' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode onus_external_ids=ONU001,ONU002,ONU003 \
  --data-urlencode configuration_preset_name=Residential \
  --data-urlencode configuration_preset_id=5

Saved responses

200200 - OKโŒ„
application/json
{
  "response": {
    "ONU001": "The configuration preset action was queued and is being processed.",
    "ONU002": "A configuration preset action is already queued for this ONU.",
    "ONU003": "The specified configuration preset does not exist or is not applicable to this ONU.",
    "ONU004": "This ONU already has an active configuration preset. Remove it before applying another."
  },
  "response_code": "success",
  "status": true
}
POST

Remove configuration preset from multiple ONUs by ONU unique external IDs

https://{subdomain}.smartolt.com/api/onu/bulk_remove_configuration_preset

Removes the currently applied configuration preset from several ONUs in one call, restoring each ONU's previous settings.

This endpoint is asynchronous. It validates each ONU, queues the work as a batch action and returns immediately โ€” the response tells you what was accepted, not what the OLT did.

The response is a list keyed by ONU external id. Accepted ONUs report that the action is being processed; every other ONU carries the reason it was skipped. Duplicate ids in one call are collapsed, and an ONU that already has this action queued is not queued twice.

Per-ONU skip reasons include: no preset applied to reverse, an action already queued, and an application still mid-apply/mid-reverse.

Body parameters (application/x-www-form-urlencoded)

ParameterRequiredDescription
onus_external_idsyesComma separated ONU external IDs, maximum 10 000

Parameters

NameInRequiredExampleDescription
onus_external_idsstringbodyYesONU001,ONU002

(String) Comma separated list of ONU unique external IDs. A maximum of 10 000 ONU unique external IDs are allowed

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/bulk_remove_configuration_preset' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode onus_external_ids=ONU001,ONU002

Saved responses

200200 - OKโŒ„
application/json
{
  "response": {
    "ONU001": "The configuration preset action was queued and is being processed.",
    "ONU002": "This ONU has no configuration preset applied that can be removed."
  },
  "response_code": "success",
  "status": true
}
POST

Check configuration preset task status

https://{subdomain}.smartolt.com/api/onu/check_configuration_preset_task_status

Check how the queued configuration-preset work is going, detailed per ONU.

Reports the most recent preset task row for each ONU โ€” apply or remove, whichever happened last โ€” so it answers both "is my bulk request still running" and "what happened to it".

status values

valuemeaning
queuedaccepted, not picked up by a worker yet
in_progressa worker is running it now
retryingan attempt failed; more attempts remain (up to 4)
failedout of attempts, or the batch action was stopped, or its task is no longer running
succeededcompleted successfully
no_taskthe ONU exists but has no preset task on record
onu_not_foundno ONU with that external id is visible to this API key

Other fields (absent for no_task / onu_not_found)

  • action โ€” apply or remove.
  • attempts โ€” attempts made so far.
  • date_start / date_end โ€” null until the worker starts / finishes an attempt.
  • error_message โ€” the error from the last failed attempt, passed through from the OLT where there was one. Always null for succeeded.

Parameters

NameInRequiredExampleDescription
onus_external_idsstringbodyYesONU001,ONU002

(String) Comma separated list of ONU unique external IDs. A maximum of 10 000 ONU unique external IDs are allowed

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/check_configuration_preset_task_status' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode onus_external_ids=ONU001,ONU002

Saved responses

200200 - OKโŒ„
application/json
{
  "response": {
    "NOSUCHONU": {
      "status": "onu_not_found"
    },
    "ONU001": {
      "status": "succeeded",
      "action": "apply",
      "attempts": 1,
      "date_start": "2026-07-22 16:59:41",
      "date_end": "2026-07-22 17:00:12",
      "error_message": null
    },
    "ONU002": {
      "status": "failed",
      "action": "apply",
      "attempts": 4,
      "date_start": "2026-07-19 09:19:46",
      "date_end": "2026-07-19 09:19:53",
      "error_message": "OLT unreachable. Please check that the Telnet port TCP on OLT IP is open for connections."
    }
  },
  "response_code": "success",
  "status": true
}
POST

Update ONU location details by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/update_location_details/{onu_external_id}

Update ONU location details for a specified ONU unique external ID

At least one parameter must be provided. Send only the parameters that you want to be updated. The zone names must be the ones defined in SmartOLT Zones section. The Splitter names must be the ones defined in SmartOLT Splitters section.
The request returns succesfully if the ONU location details were updated successfully.
It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no parameters were provided
  • the Zone is in the wrong format
  • the Splitter is in the wrong format
  • the Name is in the wrong format
  • the Address or Comment is in the wrong format
  • the Contact is in the wrong format
  • the Latitude is in the wrong format
  • the Longitude is in the wrong format
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
zonestringbodyNoCity Centre

(String) The zone where the ONU is located. The Zone can contain only alphanumeric characters, spaces, underscore and the dash (-) character

odbstringbodyNoSplitter325

(String) Splitter. The Splitter can contain only alphanumeric characters, spaces, underscore and the dash (-) character

odb_portintegerbodyNo5

(Int) Splitter port

namestringbodyNoJohn Doe

(String) Name. The Name can contain only alphanumeric characters, spaces and the following characters: @#$&()-`.+,/_

address_or_commentstringbodyNoAvenue 9

(String) Address or comment. The Address or Comment can contain only alphanumeric characters, spaces and the following characters: @#$&()-`.+,/_

contactstringbodyNoJohn Doe

(String) Contact. The Contact can contain only alphanumeric characters, spaces and the following characters: @#$&()-`.+,/_

latitudestringbodyNo52.5113340328893

(String) Latitude

longitudestringbodyNo13.401282438647513

(String) Longitude

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/update_location_details/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode 'zone=City Centre' \
  --data-urlencode odb=Splitter325 \
  --data-urlencode odb_port=5 \
  --data-urlencode 'name=John Doe' \
  --data-urlencode 'address_or_comment=Avenue 9' \
  --data-urlencode 'contact=John Doe' \
  --data-urlencode latitude=52.5113340328893 \
  --data-urlencode longitude=13.401282438647513

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Location details updated for ONU with ONU external ID onu_unique_external_id"
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please provide at least one parameter to update the ONU location details"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Update ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/update_unique_external_id/{onu_external_id}

The request returns succesfully if the ONU unique external ID was updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no new external ID was provided
  • the new external ID is in the wrong format
  • the new external ID is already assigned to another ONU
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
onu_external_idstringbodyYestest

(String) ONU unique external ID. The ONU external ID can contain only alphanumeric characters

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/update_unique_external_id/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode onu_external_id=test

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU unique external id updated"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the new ONU external ID"
}
POST

Update ONU unique external ID by board, port, ONU number

https://{subdomain}.smartolt.com/api/onu/update_unique_external_id_by_board_port_onu

The request returns succesfully if the ONU unique external ID was updated successfully.

It returns a 400 error code when:

  • no OLT ID, board, port or ONU number was provided
  • no ONU was found for the provided OLT ID, board, port or ONU number
  • no new external ID was provided
  • the new external ID is in the wrong format
  • the new external ID is already assigned to another ONU
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
olt_idintegerbodyYes1

(Int) The ID of the OLT where the ONU is placed

boardintegerbodyYes3

(Int) OLT board where the ONU is placed

portintegerbodyYes3

(Int) OLT PON port where ONU is placed

onu_numberintegerbodyYes2

(Int) OLT ONU number where ONU is placed

onu_external_idstringbodyYestest

(String) ONU unique external ID. The ONU external ID can contain only alphanumeric characters

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/update_unique_external_id_by_board_port_onu' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode olt_id=1 \
  --data-urlencode board=3 \
  --data-urlencode port=3 \
  --data-urlencode onu_number=2 \
  --data-urlencode onu_external_id=test

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU unique external id updated"
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the new ONU external ID"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Update ONU unique external ID by SN

https://{subdomain}.smartolt.com/api/onu/update_unique_external_id_by_sn

The request returns succesfully if the ONU unique external ID was updated successfully.

It returns a 400 error code when:

  • no SN was provided
  • no ONU was found for the provided SN
  • no new external ID was provided
  • the new external ID is in the wrong format
  • the new external ID is already assigned to another ONU
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
olt_idintegerbodyYes1

(Int) The ID of the OLT where the ONU is placed

snstringbodyYesZTEGC7E230E4

(String) ONU SN

onu_external_idstringbodyYestest

(String) ONU unique external ID. The ONU external ID can contain only alphanumeric characters

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/update_unique_external_id_by_sn' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode olt_id=1 \
  --data-urlencode sn=ZTEGC7E230E4 \
  --data-urlencode onu_external_id=test

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU unique external id updated"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the new ONU external ID"
}
POST

Update ONU attached VLANs by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/update_attached_vlans/{onu_external_id}

Update ONU attached VLANs for a specified ONU unique external ID

At least one VLAN must be provided. The request returns succesfully if the ONU attached VLANs were updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no VLAN was provided
  • the VLAN lists are in the wrong format
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
add_vlansstringbodyNo10,20

(String) VLANs to be added, comma separated. The VLANs list can contain only digits and the comma (,) character

remove_vlansstringbodyNo33

(String) VLANs to be removed, comma separated. The VLANs list can contain only digits and the comma (,) character

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/update_attached_vlans/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode add_vlans=10,20 \
  --data-urlencode remove_vlans=33

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Attached VLANs updated for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please provide at least one VLAN to add/remove"
}
POST

Update ONU main VLAN-ID by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/update_main_vlan/{onu_external_id}

Update ONU main VLAN-ID for a specified ONU unique external ID

The request returns succesfully if the ONU main VLAN-ID was updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no VLAN-ID was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
vlanintegerbodyYes10

(Int) ONU new main VLAN-ID

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/update_main_vlan/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode vlan=10

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Main VLAN-ID updated for ONU with ONU external ID onu_unique_external_id"
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify ONU VLAN-ID"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Update ONU mode by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/update_onu_mode/{onu_external_id}

Update ONU mode for a specified ONU unique external ID

The request returns succesfully if the ONU mode was updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no ONU mode was provided
  • wrong ONU mode was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
onu_modestringbodyYesRouting

(String) ONU mode. Allowed values: Routing, Bridging

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/update_onu_mode/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode onu_mode=Routing

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU mode updated for ONU with ONU external ID onu_unique_external_id"
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Allowed values for ONU mode are 'Routing' or 'Bridging'"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU Mgmt IP mode to Inactive by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_onu_mgmt_ip_inactive/{onu_external_id}

Set ONU Mgmt IP mode to Inactive for a specified ONU unique external ID

The request returns succesfully if the ONU Mgmt IP mode was updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_onu_mgmt_ip_inactive/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Changed Mgmt IP mode to Inactive for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU Mgmt IP mode to Static IP by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_onu_mgmt_ip_static_ip/{onu_external_id}

Set ONU Mgmt IP mode to Static IP for a specified ONU unique external ID

The request returns succesfully if the ONU Mgmt IP mode was updated successfully.

Possible combinations for setting Mgmt IP mode to Static IP through API:

  • VLAN only (the system will autoassign an available IP address from the existing IP pools)
  • VLAN + IP subnet (ex: 10.100.0.0/24)
  • VLAN + IP address + subnet mask + gateway + dns1 + dns2

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no VLAN-ID, IPv4 address, subnet mask, gateway, DNS1 was provided
  • wrong VLAN-ID, IPv4 address, subnet mask, gateway, DNS1, DNS2 was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
vlanintegerbodyYes100

(Int) ONU Mgmt VLAN-ID

cvlanintegerbodyNo101

(Int) ONU Mgmt CVLAN-ID

svlanintegerbodyNo102

(Int) ONU Mgmt SVLAN-ID

tag_transform_modestringbodyNotranslate

(String) Tag-transform mode. Allowed values: default, translate, translate-and-add

ipv4_addressstringbodyNo10.100.0.11 or 10.100.0.0/24

(String) IPv4 address or IP subnet (IP pool). The IPv4 address must be a valid IP address or a valid IP subnet (IP pool). The system will autoassign an available IP address from the existing IP pools, if this field is not specified.

subnet_maskstringbodyNo255.255.255.0

(String) Subnet mask. The Subnet mask must be a valid IP address

gatewaystringbodyNo10.100.0.1

(String) Gateway. The Gateway must be a valid IP address

dns1stringbodyNo8.8.8.8

(String) DNS1. The DNS1 must be a valid IP address

dns2stringbodyNo8.8.4.4

(String) DNS2. The DNS2 must be a valid IP address

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_onu_mgmt_ip_static_ip/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode vlan=100 \
  --data-urlencode cvlan=101 \
  --data-urlencode svlan=102 \
  --data-urlencode tag_transform_mode=translate \
  --data-urlencode 'ipv4_address=10.100.0.11 or 10.100.0.0/24' \
  --data-urlencode subnet_mask=255.255.255.0 \
  --data-urlencode gateway=10.100.0.1 \
  --data-urlencode dns1=8.8.8.8 \
  --data-urlencode dns2=8.8.4.4

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Changed Mgmt IP mode to Static IP for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU Mgmt IP mode to DHCP by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_onu_mgmt_ip_dhcp/{onu_external_id}

Set ONU Mgmt IP mode to DHCP for a specified ONU unique external ID

The request returns succesfully if the ONU Mgmt IP mode was updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no VLAN-ID was provided
  • wrong VLAN-ID was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
vlanintegerbodyYes100

(Int) ONU Mgmt VLAN-ID

cvlanintegerbodyNo101

(Int) ONU Mgmt CVLAN-ID

svlanintegerbodyNo102

(Int) ONU Mgmt SVLAN-ID

tag_transform_modestringbodyNotranslate

(String) Tag-transform mode. Allowed values: default, translate, translate-and-add

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_onu_mgmt_ip_dhcp/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode vlan=100 \
  --data-urlencode cvlan=101 \
  --data-urlencode svlan=102 \
  --data-urlencode tag_transform_mode=translate

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Changed Mgmt IP mode to DHCP for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Enable ONU TR069 by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/enable_tr069/{onu_external_id}

Enable ONU TR069 for a specified ONU unique external ID

The request returns succesfully if the ONU TR069 was enabled successfully.
It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • TR069 feature was not enabled for this OLT
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
tr069_profilestringbodyYestr069_profile_name

(String) TR069 profile name

tr069_interfacestringbodyNomgmt

(String) The interface that carries the TR-069 session. Allowed values are 'wan', 'mgmt'.

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/enable_tr069/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode tr069_profile=tr069_profile_name \
  --data-urlencode tr069_interface=mgmt

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "TR069 profile enabled"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Disable ONU TR069 by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/disable_tr069/{onu_external_id}

Disable ONU TR069 for a specified ONU unique external ID

The request returns succesfully if the ONU TR069 was disabled successfully.
It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • TR069 feature was not enabled for this OLT
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
application/x-www-form-urlencodedapplication/x-www-form-urlencodedbodyNoโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/disable_tr069/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "TR069 profile disabled"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU VoIP mode to Disabled by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_onu_voip_disabled/{onu_external_id}

Set ONU VoIP mode to Disabled for a specified ONU unique external ID

The request returns succesfully if the ONU VoIP mode was updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_onu_voip_disabled/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Disabled VoIP connection for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU VoIP mode to Enabled by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_onu_voip_enabled/{onu_external_id}

Set ONU VoIP mode to Enabled for a specified ONU unique external ID

The request returns succesfully if the ONU VoIP mode was updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
voip_attach_tostringbodyNoWAN

(String) Attach VoIP to WAN or Mgmt

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_onu_voip_enabled/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode voip_attach_to=WAN

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Enabled VoIP connection for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Enable ONU VoIP port by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/enable_onu_voip_port/{onu_external_id}

Enable ONU VoIP port for a specified ONU unique external ID

The request returns succesfully if the ONU VoIP port was enabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no VoIP port, phone number, password was provided
  • wrong VoIP port, phone number, password was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
voip_portstringbodyYespots_0/1

(String) VoIP port

voip_profile_namestringbodyNosip_profile

(String) VoIP profile name

phone_numberstringbodyYes123654789

(String) Phone number. The phone number can contain only digits and the + character. A maximum of 25 characters is allowed

sip_useridstringbodyNo123654789

(String) SIP userid. The SIP userid can contain only digits and the + character. A maximum of 25 characters is allowed

passwordstringbodyYespass

(String) Password. The password can contain only alphanumeric characters. A maximum of 25 characters is allowed

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/enable_onu_voip_port/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode voip_port=pots_0/1 \
  --data-urlencode voip_profile_name=sip_profile \
  --data-urlencode phone_number=123654789 \
  --data-urlencode sip_userid=123654789 \
  --data-urlencode password=pass

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "VoIP port pots_0/1 enabled for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Disable ONU VoIP port by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/disable_onu_voip_port/{onu_external_id}

Disable ONU VoIP port for a specified ONU unique external ID

The request returns succesfully if the ONU VoIP port was disabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no VoIP port was provided
  • wrong VoIP port was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
voip_portstringbodyYespots_0/1

(String) VoIP port

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/disable_onu_voip_port/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode voip_port=pots_0/1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "VoIP port pots_0/1 disabled for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU WAN mode to Setup via ONU webpage by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_setup_via_onu_webpage/{onu_external_id}

Set ONU WAN mode to Setup via ONU webpage for a specified ONU unique external ID

The request returns succesfully if the ONU WAN mode was updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_setup_via_onu_webpage/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU WAN mode updated to Setup via ONU webpage for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU WAN mode to DHCP by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_dhcp/{onu_external_id}

Set ONU WAN mode to DHCP for a specified ONU unique external ID

The request returns succesfully if the ONU WAN mode was updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
configuration_methodstringbodyNoOMCI

(String) Configuration method. Allowed values are "OMCI", "TR069".

ip_protocolstringbodyNoipv4ipv6

(String) IP protocol. Allowed values are "ipv4", ipv4ipv6".

ipv6_address_modestringbodyNoNone

(String) IPv6 address mode. Allowed values are "DHCPv6", "Auto", "Static", "None"

ipv6_addressstringbodyNoโ€”

(String) IPv6 address

ipv6_gatewaystringbodyNoโ€”

(String) IPv6 gateway

ipv6_prefix_delegation_modestringbodyNoDHCPv6-PD

(String) IPv6 prefix. Allowed values are "DHCPv6", "Static", "None"

ipv6_prefix_addressstringbodyNoโ€”

(String) IPv6 prefix address

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_dhcp/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode configuration_method=OMCI \
  --data-urlencode ip_protocol=ipv4ipv6 \
  --data-urlencode ipv6_address_mode=None \
  --data-urlencode ipv6_prefix_delegation_mode=DHCPv6-PD

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU WAN mode updated to DHCP for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU WAN mode to Static IP by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_static_ip/{onu_external_id}

Set ONU WAN mode to Static IP for a specified ONU unique external ID

The request returns succesfully if the ONU WAN mode was updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no IPv4 address, subnet mask, gateway, DNS1 was provided
  • wrong IPv4 address, subnet mask, gateway, DNS1, DNS2 was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
ipv4_addressstringbodyYes10.100.0.11

(String) IPv4 address. The IPv4 address must be a valid IP address

subnet_maskstringbodyYes255.255.255.0

(String) Subnet mask. The Subnet mask must be a valid IP address

gatewaystringbodyYes10.100.0.1

(String) Gateway. The Gateway must be a valid IP address

dns1stringbodyYes8.8.8.8

(String) DNS1. The DNS1 must be a valid IP address

dns2stringbodyNo8.8.4.4

(String) DNS2. The DNS2 must be a valid IP address

configuration_methodstringbodyNoOMCI

(String) WAN configuration method. Allowed values are "OMCI", "TR069".

ip_protocolstringbodyNoipv4ipv6

(String) IP protocol. Allowed values are "ipv4", ipv4ipv6".

ipv6_address_modestringbodyNoNone

(String) IPv6 address mode. Allowed values are "DHCPv6", "Auto", "Static", "None"

ipv6_addressstringbodyNoโ€”

(String) IPv6 address

ipv6_gatewaystringbodyNoโ€”

(String) IPv6 gateway

ipv6_prefix_delegation_modestringbodyNoDHCPv6-PD

(String) IPv6 prefix. Allowed values are "DHCPv6", "Static", "None"

ipv6_prefix_addressstringbodyNoโ€”

(String) IPv6 prefix address

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_static_ip/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode ipv4_address=10.100.0.11 \
  --data-urlencode subnet_mask=255.255.255.0 \
  --data-urlencode gateway=10.100.0.1 \
  --data-urlencode dns1=8.8.8.8 \
  --data-urlencode dns2=8.8.4.4 \
  --data-urlencode configuration_method=OMCI \
  --data-urlencode ip_protocol=ipv4ipv6 \
  --data-urlencode ipv6_address_mode=None \
  --data-urlencode ipv6_prefix_delegation_mode=DHCPv6-PD

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU WAN mode updated to Static IP for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU WAN mode to PPPoE by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_pppoe/{onu_external_id}

Set ONU WAN mode to PPPoE for a specified ONU unique external ID

The request returns succesfully if the ONU WAN mode was updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no username, password was provided
  • wrong username, password was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
usernamestringbodyYesuser

(String) PPPoE username. The username can contain only alphanumeric characters. A maximum of 64 characters is allowed

passwordstringbodyYespass

(String) PPPoE password. The password can contain only alphanumeric characters. A maximum of 64 characters is allowed

configuration_methodstringbodyNoOMCI

(String) WAN configuration method. Allowed values are "OMCI", "TR069".

ip_protocolstringbodyNoipv4ipv6

(String) IP protocol. Allowed values are "ipv4", ipv4ipv6".

ipv6_address_modestringbodyNoNone

(String) IPv6 address mode. Allowed values are "DHCPv6", "Auto", "Static", "None"

ipv6_addressstringbodyNoโ€”

(String) IPv6 address

ipv6_gatewaystringbodyNoโ€”

(String) IPv6 gateway

ipv6_prefix_delegation_modestringbodyNoDHCPv6-PD

(String) IPv6 prefix. Allowed values are "DHCPv6", "Static", "None"

ipv6_prefix_addressstringbodyNoโ€”

(String) IPv6 prefix address

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_onu_wan_mode_pppoe/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode username=user \
  --data-urlencode password=pass \
  --data-urlencode configuration_method=OMCI \
  --data-urlencode ip_protocol=ipv4ipv6 \
  --data-urlencode ipv6_address_mode=None \
  --data-urlencode ipv6_prefix_delegation_mode=DHCPv6-PD

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU WAN mode updated to PPPoE for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU WAN configuration method by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_onu_wan_configuration_method/{onu_external_id}

Set ONU WAN configuration method for a specified ONU unique external ID

The request returns succesfully if the ONU WAN configuration method was updated successfully.
It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command
  • TR069 and Management IP are not enabled on the ONU

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
configuration_methodstringbodyNoOMCI

(String) Configuration method. Allowed values are "OMCI", "TR069".

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_onu_wan_configuration_method/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode configuration_method=OMCI

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU WAN configuration method set to OMCI for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU WAN IP version by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_onu_wan_ip_version/{onu_external_id}

Set ONU WAN IP version for a specified ONU unique external ID

This method can be used to toggle between IPv4 and dual-stack IPv4/IPv6.

The request returns succesfully if the ONU WAN IP version was updated successfully.
It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command
  • TR069 and Management IP are not enabled on the ONU

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
configuration_methodstringbodyNoTR069

(String) Configuration method. Allowed values are "OMCI", "TR069".

ip_protocolstringbodyNoipv4ipv6

(String) IP protocol. Allowed values are "ipv4", ipv4ipv6".

ipv6_address_modestringbodyNoNone

(String) IPv6 address mode. Allowed values are "DHCPv6", "Auto", "Static", "None"

ipv6_addressstringbodyNoโ€”

(String) IPv6 address

ipv6_gatewaystringbodyNoโ€”

(String) IPv6 gateway

ipv6_prefix_delegation_modestringbodyNoDHCPv6-PD

(String) IPv6 prefix. Allowed values are "DHCPv6", "Static", "None"

ipv6_prefix_addressstringbodyNoโ€”

(String) IPv6 prefix address

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_onu_wan_ip_version/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode configuration_method=TR069 \
  --data-urlencode ip_protocol=ipv4ipv6 \
  --data-urlencode ipv6_address_mode=None \
  --data-urlencode ipv6_prefix_delegation_mode=DHCPv6-PD

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU WAN IP version updated for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Update ONU max-mac-learn by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/update_max_mac_learn/{onu_external_id}

Update ONU max-mac-learn for a specified ONU unique external ID

The request returns succesfully if the ONU max-mac-learn was updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • Max-mac-learn feature was not enabled for this OLT
  • no ONU max-mac-learn was provided
  • wrong ONU max-mac-learn was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
enable_max_mac_learnintegerbodyYes1

(Int) Enable max-mac-learn. Allowed values: 1 for enabling max-mac-learn, 0 for disabling max-mac-learn

max_mac_learnintegerbodyNo5

(Int) Max MACs allowed

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/update_max_mac_learn/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode enable_max_mac_learn=1 \
  --data-urlencode max_mac_learn=5

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Max-mac-learn updated for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Max MACs allowed must be a number"
}
POST

Enable ONU IP DHCP-Snooping by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/enable_ip_dhcp_snooping/{onu_external_id}

Enable ONU IP DHCP-Snooping for a specified ONU unique external ID

The request returns succesfully if the ONU IP DHCP-Snooping was enabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • IP DHCP-Snooping feature was not enabled for this OLT
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/enable_ip_dhcp_snooping/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "IP DHCP-Snooping enabled for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Disable ONU IP DHCP-Snooping by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/disable_ip_dhcp_snooping/{onu_external_id}

Disable ONU IP DHCP-Snooping for a specified ONU unique external ID

The request returns succesfully if the ONU IP DHCP-Snooping was disabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • IP DHCP-Snooping feature was not enabled for this OLT
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/disable_ip_dhcp_snooping/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "IP DHCP-Snooping disabled for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Enable ONU DHCP Option82 by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/enable_dhcp_option82/{onu_external_id}

Enable ONU DHCP Option82 for a specified ONU unique external ID

The request returns succesfully if the ONU DHCP Option82 was enabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • DHCP Option82 feature was not enabled for this OLT
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/enable_dhcp_option82/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "DHCP Option82 enabled for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Disable ONU DHCP Option82 by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/disable_dhcp_option82/{onu_external_id}

Disable ONU DHCP Option82 for a specified ONU unique external ID

The request returns succesfully if the ONU DHCP Option82 was disabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • DHCP Option82 feature was not enabled for this OLT
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/disable_dhcp_option82/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "DHCP option82 disabled for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Enable ONU IP source-guard by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/enable_ip_source_guard/{onu_external_id}

Enable ONU IP source-guard for a specified ONU unique external ID

The request returns succesfully if the ONU IP source-guard was enabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • IP source-guard feature was not enabled for this OLT
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/enable_ip_source_guard/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "IP source-guard enabled for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Disable ONU IP source-guard by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/disable_ip_source_guard/{onu_external_id}

Disable ONU IP source-guard for a specified ONU unique external ID

The request returns succesfully if the ONU IP source-guard was disabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • IP source-guard feature was not enabled for this OLT
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/disable_ip_source_guard/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "IP source-guard disabled for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Enable ONU allow remote access to WAN IP by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/enable_allow_remote_access_to_wan_ip/{onu_external_id}

Enable ONU allow remote access to WAN IP for a specified ONU unique external ID

The request returns succesfully if the ONU allow remote access to WAN IP was enabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • Allow remote access to WAN IP feature is not supported for this ONU/OLT
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
allow_access_fromstringbodyNoeverywhere

(String) Allowed values are 'everywhere' and 'acl'. Default value is 'everywhere'.

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/enable_allow_remote_access_to_wan_ip/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode allow_access_from=everywhere

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Allow remote access to WAN IP enabled for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Disable ONU allow remote access to WAN IP by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/disable_allow_remote_access_to_wan_ip/{onu_external_id}

Disable ONU allow remote access to WAN IP for a specified ONU unique external ID

The request returns succesfully if the ONU allow remote access to WAN IP was disabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • Allow remote access to WAN IP feature is not supported for this ONU/OLT
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/disable_allow_remote_access_to_wan_ip/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Allow remote access to WAN IP disabled for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Update ONU speed profiles by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/update_onu_speed_profiles/{onu_external_id}

Update ONU upload and download speed profiles for a specified ONU unique external ID

At least one speed profile name must be provided. The profile names must be the ones defined in SmartOLT Speed Profiles section.

The request returns succesfully if the profile names on the ONU were updated or the profiles names provided are the same as the ones already saved on the ONU.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no speed profile names were provided
  • no upload speed profile was found with the name provided
  • no download speed profile was found with the name provided
  • OLT was unable to process the command

Asynchronous mode (async=1)

Send async = 1 to queue the work and return immediately. SmartOLT first does the same checks as in the normal mode. If a check fails, the request returns the same 400 error.

If you do not send async, or you send 0, the request works as described above.

In asynchronous mode:

  • the response tells you that the action was accepted, not what the OLT did
  • the response contains "queued": true
  • if the newest queued action for this ONU is the same action, the ONU is not queued again
  • the action is queued also when the speed profiles are the same as the ones saved on the ONU
  • SmartOLT runs all actions for one ONU in the order it received them
  • OLT errors are not returned in this response. Use check_bulk_task_status to see the result
  • the call counts in the hourly budget for asynchronous calls, not in the normal hourly budget

ONU with queued actions

If the ONU already has queued actions, a request without async is also queued. This keeps the actions in the order SmartOLT received them. The response then contains "queued": true. Do not mark the action as done when you see this field. Use check_bulk_task_status to see the result.

If another request changes this ONU at the same time, the request returns error 409 with error_code onu_busy. Send the request again later.

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
upload_speed_profile_namestringbodyNo50M

(String) Upload speed profile name

download_speed_profile_namestringbodyNo100M

(String) Download speed profile name

asyncintegerbodyNo1

(Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/update_onu_speed_profiles/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode upload_speed_profile_name=50M \
  --data-urlencode download_speed_profile_name=100M \
  --data-urlencode async=1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Speed profiles updated for ONU with ONU external ID test"
}
200200 - OK (async=1)โŒ„
application/json
{
  "response": "The action was queued and is being processed.",
  "response_code": "success",
  "status": true,
  "queued": true
}
200200 - Speed profiles are the same as saved on ONUโŒ„
application/json
{
  "status": true,
  "response": "Provided speed profiles are the same with existing ones for ONU with ONU external ID test"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - OLT wasn't able to process commandโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: OLT wasn't able to process the command"
}
400400 - Specify at least one speed profileโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify at least one speed profile name"
}
400400 - No download speed profile foundโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No download speed profile with the name 100G was found"
}
400400 - No upload speed profile foundโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No upload speed profile with the name 50G was found"
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}
POST

Update multiple ONUs speed profiles by ONU unique external IDs

https://{subdomain}.smartolt.com/api/onu/bulk_update_speed_profiles

Update multiple ONUs upload and download speed profiles for a specified list of ONU unique external IDs

At least one speed profile name must be provided. The profile names must be the ones defined in SmartOLT Speed Profiles section.
The request returns succesfully if the profile names on the ONUs were updated or the profiles names provided are the same as the ones already saved on the ONUs.
It returns a 400 error code when:

  • another API call to the same method is already in progress
  • no ONU external IDs were provided
  • more than the maximum allowed number of ONUs were provided (A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1)
  • no speed profile names were provided
  • no upload speed profile was found with the name provided
  • no download speed profile was found with the name provided
  • OLT was unable to process the command

Asynchronous mode (async=1)

Send async = 1 to queue the work as a batch action. The request returns immediately. The response tells you which ONUs were accepted, not what the OLT did.

If you do not send async, or you send 0, the request works as described above.

In asynchronous mode:

  • a maximum of 10 000 ONU unique external IDs are allowed
  • accepted ONUs report that the action was queued and is being processed
  • an ONU that already has the same action queued is not queued twice
  • duplicate IDs in one call are collapsed
  • every other ONU carries the reason it was skipped: ONU not found, or subscription expired
  • OLT errors are not returned in this response. Use check_bulk_task_status to see the result for each ONU

Parameters

NameInRequiredExampleDescription
onus_external_idsstringbodyYestest,test1

(String) Comma separated list of ONU unique external IDs. A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1

upload_speed_profile_namestringbodyNo50M

(String) Upload speed profile name

download_speed_profile_namestringbodyNo100M

(String) Download speed profile name

asyncstringbodyNo1

(Optional, Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/bulk_update_speed_profiles' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode onus_external_ids=test,test1 \
  --data-urlencode upload_speed_profile_name=50M \
  --data-urlencode download_speed_profile_name=100M \
  --data-urlencode async=1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": {
    "test": "Speed profiles updated for ONU with ONU external ID test",
    "test1": "Speed profiles updated for ONU with ONU external ID test1"
  }
}
200200 - OK (async=1)โŒ„
application/json
{
  "response": {
    "ONU001": "The action was queued and is being processed.",
    "ONU002": "The same action is already queued for this ONU.",
    "NOSUCHONU": "ONU not found"
  },
  "response_code": "success",
  "status": true
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Specify at least one speed profileโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify at least one speed profile name"
}
400400 - No download speed profile foundโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No download speed profile with the name 100G was found"
}
400400 - No upload speed profile foundโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No upload speed profile with the name 50G was found"
}
POST

Update ONU service port by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/update_service_port/{onu_external_id}

Update ONU service port for a specified ONU unique external ID

The request returns succesfully if the ONU service port was updated successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no service port was provided
  • wrong service port was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
service_portstringbodyYes3

(String) ONU service port

cvlanintegerbodyNo101

(Int) ONU CVLAN-ID

svlanintegerbodyNo102

(Int) ONU SVLAN-ID

tag_transform_modestringbodyNotranslate

(String) Tag-transform mode. Allowed values: default, translate, translate-and-add

use_other_all_tls_vlanintegerbodyNo1

(Int) Use "other-all" TLS VLAN. Allowed values: 0, 1

vlanintegerbodyNo100

(Int) ONU VLAN-ID

upload_speed_profile_namestringbodyNo50M

(String) Upload speed profile name

download_speed_profile_namestringbodyNo100M

(String) Download speed profile name

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/update_service_port/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode service_port=3 \
  --data-urlencode cvlan=101 \
  --data-urlencode svlan=102 \
  --data-urlencode tag_transform_mode=translate \
  --data-urlencode use_other_all_tls_vlan=1 \
  --data-urlencode vlan=100 \
  --data-urlencode upload_speed_profile_name=50M \
  --data-urlencode download_speed_profile_name=100M

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Service-port ID 3 updated for ONU with ONU external ID test"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU Service-port ID"
}
POST

Set ONU ethernet port mode to LAN by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_lan/{onu_external_id}

Set ONU ethernet port mode to LAN for a specified ONU unique external ID

The request returns succesfully if the ONU ethernet port mode was set to LAN successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no ethernet port was provided
  • wrong ethernet port was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
ethernet_portstringbodyYeseth_0/1

(String) ONU ethernet port

dhcpstringbodyNoNo control

(String) Ethernet port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_lan/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode ethernet_port=eth_0/1 \
  --data-urlencode 'dhcp=No control'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "eth_0/1 mode set to LAN for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU ethernet port"
}
POST

Set ONU ethernet port mode to IPTV by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_iptv/{onu_external_id}

Set ONU ethernet port mode to IPTV for a specified ONU unique external ID

The request returns succesfully if the ONU ethernet port mode was set to IPTV successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no ethernet port was provided
  • wrong ethernet port was provided
  • IPTV is not enabled on the ONU
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
ethernet_portstringbodyYeseth_0/1

(String) ONU ethernet port

dhcpstringbodyNoNo control

(String) Ethernet port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_iptv/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode ethernet_port=eth_0/1 \
  --data-urlencode 'dhcp=No control'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "eth_0/1 mode set to IPTV for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU ethernet port"
}
POST

Set ONU ethernet port mode to Access by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_access/{onu_external_id}

Set ONU ethernet port mode to Access for a specified ONU unique external ID

The request returns succesfully if the ONU ethernet port mode was set to Access successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no ethernet port was provided
  • wrong ethernet port was provided
  • no VLAN-ID was provided
  • the VLAN-ID is not in the ONU attached VLANs list
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
ethernet_portstringbodyYeseth_0/1

(String) ONU ethernet port

vlanintegerbodyYes10

(Int) Ethernet port VLAN-ID

dhcpstringbodyNoNo control

(String) Ethernet port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_access/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode ethernet_port=eth_0/1 \
  --data-urlencode vlan=10 \
  --data-urlencode 'dhcp=No control'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "eth_0/1 mode set to Access for ONU with ONU external ID onu_unique_external_id"
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU ethernet port"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU ethernet port mode to Hybrid by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_hybrid/{onu_external_id}

Set ONU ethernet port mode to Hybrid for a specified ONU unique external ID

The request returns succesfully if the ONU ethernet port mode was set to Hybrid successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no ethernet port was provided
  • wrong ethernet port was provided
  • no VLAN-ID was provided
  • the VLAN-ID is not in the ONU attached VLANs list
  • no Allowed VLANs were provided
  • the Allowed VLANs list is in the wrong format
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
ethernet_portstringbodyYeseth_0/1

(String) ONU ethernet port

vlanintegerbodyYes10

(Int) Ethernet port VLAN-ID

allowed_vlansstringbodyYes20,33

(String) Ethernet port allowed VLANs, comma separated. The VLANs list can contain only digits and the comma (,) character

dhcpstringbodyNoNo control

(String) Ethernet port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_hybrid/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode ethernet_port=eth_0/1 \
  --data-urlencode vlan=10 \
  --data-urlencode allowed_vlans=20,33 \
  --data-urlencode 'dhcp=No control'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "eth_0/1 mode set to Hybrid for ONU with ONU external ID onu_unique_external_id"
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU ethernet port"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU ethernet port mode to Trunk by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_trunk/{onu_external_id}

Set ONU ethernet port mode to Trunk for a specified ONU unique external ID

The request returns succesfully if the ONU ethernet port mode was set to Trunk successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no ethernet port was provided
  • wrong ethernet port was provided
  • no Allowed VLANs were provided
  • the Allowed VLANs list is in the wrong format
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
ethernet_portstringbodyYeseth_0/1

(String) ONU ethernet port

allowed_vlansstringbodyYes20,33

(String) Ethernet port allowed VLANs, comma separated. The VLANs list can contain only digits and the comma (,) character

dhcpstringbodyNoNo control

(String) Ethernet port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_trunk/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode ethernet_port=eth_0/1 \
  --data-urlencode allowed_vlans=20,33 \
  --data-urlencode 'dhcp=No control'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "eth_0/1 mode set to Trunk for ONU with ONU external ID onu_unique_external_id"
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU ethernet port"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU ethernet port mode to Transparent by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_transparent/{onu_external_id}

Set ONU ethernet port mode to Transparent for a specified ONU unique external ID

The request returns succesfully if the ONU ethernet port mode was set to Transparent successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no ethernet port was provided
  • wrong ethernet port was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
ethernet_portstringbodyYeseth_0/1

(String) ONU ethernet port

dhcpstringbodyNoNo control

(String) Ethernet port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_ethernet_port_transparent/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode ethernet_port=eth_0/1 \
  --data-urlencode 'dhcp=No control'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "eth_0/1 mode set to Transparent for ONU with ONU external ID onu_unique_external_id"
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU ethernet port"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Shutdown ONU ethernet port by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/shutdown_ethernet_port/{onu_external_id}

Shutdown ONU ethernet port for a specified ONU unique external ID

The request returns succesfully if the ONU ethernet port was shutdown successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no ethernet port was provided
  • wrong ethernet port was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
ethernet_portstringbodyYeseth_0/1

(String) ONU ethernet port

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/shutdown_ethernet_port/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode ethernet_port=eth_0/1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "eth_0/1 port shutdown for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU ethernet port"
}
POST

Set ONU WiFi port mode to LAN by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_wifi_port_lan/{onu_external_id}

Set ONU WiFi port mode to LAN for a specified ONU unique external ID

The request returns succesfully if the ONU WiFi port mode was set to LAN successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no WiFi port was provided
  • wrong WiFi port was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
wifi_portstringbodyYeswifi_0/1

(String) ONU WiFi port

dhcpstringbodyNoNo control

(String) WiFi port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden

ssidstringbodyNotest

(String) WiFi port SSID

passwordstringbodyNotestpass

(String) WiFi port password

authentication_modestringbodyNoWPA2

(String) WiFi port authentication mode. Allowed values: WPA2, Open-system

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_wifi_port_lan/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode wifi_port=wifi_0/1 \
  --data-urlencode 'dhcp=No control' \
  --data-urlencode ssid=test \
  --data-urlencode password=testpass \
  --data-urlencode authentication_mode=WPA2

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "wifi_0/1 mode set to LAN for ONU with ONU external ID onu_unique_external_id"
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU WiFi port"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU WiFi port mode to IPTV by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_wifi_port_iptv/{onu_external_id}

Set ONU WiFi port mode to IPTV for a specified ONU unique external ID

The request returns succesfully if the ONU WiFi port mode was set to IPTV successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no WiFi port was provided
  • wrong WiFi port was provided
  • IPTV is not enabled on the ONU
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
wifi_portstringbodyYeswifi_0/1

(String) ONU WiFi port

dhcpstringbodyNoNo control

(String) WiFi port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden

ssidstringbodyNotest

(String) WiFi port SSID

passwordstringbodyNotestpass

(String) WiFi port password

authentication_modestringbodyNoWPA2

(String) WiFi port authentication mode. Allowed values: WPA2, Open-system

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_wifi_port_iptv/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode wifi_port=wifi_0/1 \
  --data-urlencode 'dhcp=No control' \
  --data-urlencode ssid=test \
  --data-urlencode password=testpass \
  --data-urlencode authentication_mode=WPA2

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "wifi_0/1 mode set to IPTV for ONU with ONU external ID onu_unique_external_id"
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU WiFi port"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU WiFi port mode to Access by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_wifi_port_access/{onu_external_id}

Set ONU WiFi port mode to Access for a specified ONU unique external ID

The request returns succesfully if the ONU WiFi port mode was set to Access successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no WiFi port was provided
  • wrong WiFi port was provided
  • no VLAN-ID was provided
  • the VLAN-ID is not in the ONU attached VLANs list
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
wifi_portstringbodyYeswifi_0/1

(String) ONU WiFi port

vlanintegerbodyYes10

(Int) WiFi port VLAN-ID

dhcpstringbodyNoNo control

(String) WiFi port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden

ssidstringbodyNotest

(String) WiFi port SSID

passwordstringbodyNotestpass

(String) WiFi port password

authentication_modestringbodyNoWPA2

(String) WiFi port authentication mode. Allowed values: WPA2, Open-system

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_wifi_port_access/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode wifi_port=wifi_0/1 \
  --data-urlencode vlan=10 \
  --data-urlencode 'dhcp=No control' \
  --data-urlencode ssid=test \
  --data-urlencode password=testpass \
  --data-urlencode authentication_mode=WPA2

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "wifi_0/1 mode set to Access for ONU with ONU external ID onu_unique_external_id"
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU WiFi port"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Set ONU WiFi port mode to Hybrid by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_wifi_port_hybrid/{onu_external_id}

Set ONU WiFi port mode to Hybrid for a specified ONU unique external ID

The request returns succesfully if the ONU WiFi port mode was set to Hybrid successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no WiFi port was provided
  • wrong WiFi port was provided
  • no VLAN-ID was provided
  • the VLAN-ID is not in the ONU attached VLANs list
  • no Allowed VLANs were provided
  • the Allowed VLANs list is in the wrong format
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
wifi_portstringbodyYeswifi_0/1

(String) ONU WiFi port

vlanintegerbodyYes10

(Int) WiFi port VLAN-ID

allowed_vlansstringbodyYes20,33

(String) WiFi port allowed VLANs, comma separated. The VLANs list can contain only digits and the comma (,) character

dhcpstringbodyNoNo control

(String) WiFi port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden

ssidstringbodyNotest

(String) WiFi port SSID

passwordstringbodyNotestpass

(String) WiFi port password

authentication_modestringbodyNoWPA2

(String) WiFi port authentication mode. Allowed values: WPA2, Open-system

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_wifi_port_hybrid/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode wifi_port=wifi_0/1 \
  --data-urlencode vlan=10 \
  --data-urlencode allowed_vlans=20,33 \
  --data-urlencode 'dhcp=No control' \
  --data-urlencode ssid=test \
  --data-urlencode password=testpass \
  --data-urlencode authentication_mode=WPA2

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "wifi_0/1 mode set to Hybrid for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU WiFi port"
}
POST

Set ONU WiFi port mode to Trunk by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_wifi_port_trunk/{onu_external_id}

Set ONU WiFi port mode to Trunk for a specified ONU unique external ID

The request returns succesfully if the ONU WiFi port mode was set to Trunk successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no WiFi port was provided
  • wrong WiFi port was provided
  • no Allowed VLANs were provided
  • the Allowed VLANs list is in the wrong format
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
wifi_portstringbodyYeswifi_0/1

(String) ONU WiFi port

allowed_vlansstringbodyYes20,33

(String) WiFi port allowed VLANs, comma separated. The VLANs list can contain only digits and the comma (,) character

dhcpstringbodyNoNo control

(String) WiFi port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden

ssidstringbodyNotest

(String) WiFi port SSID

passwordstringbodyNotestpass

(String) WiFi port password

authentication_modestringbodyNoWPA2

(String) WiFi port authentication mode. Allowed values: WPA2, Open-system

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_wifi_port_trunk/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode wifi_port=wifi_0/1 \
  --data-urlencode allowed_vlans=20,33 \
  --data-urlencode 'dhcp=No control' \
  --data-urlencode ssid=test \
  --data-urlencode password=testpass \
  --data-urlencode authentication_mode=WPA2

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "wifi_0/1 mode set to Trunk for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU WiFi port"
}
POST

Set ONU WiFi port mode to Transparent by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/set_wifi_port_transparent/{onu_external_id}

Set ONU WiFi port mode to Transparent for a specified ONU unique external ID

The request returns succesfully if the ONU WiFi port mode was set to Transparent successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no WiFi port was provided
  • wrong WiFi port was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
wifi_portstringbodyYeswifi_0/1

(String) ONU WiFi port

dhcpstringbodyNoNo control

(String) WiFi port DHCP. Allowed values: No control, From ISP, From ONU, Forbidden

ssidstringbodyNotest

(String) WiFi port SSID

passwordstringbodyNotestpass

(String) WiFi port password

authentication_modestringbodyNoWPA2

(String) WiFi port authentication mode. Allowed values: WPA2, Open-system

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/set_wifi_port_transparent/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode wifi_port=wifi_0/1 \
  --data-urlencode 'dhcp=No control' \
  --data-urlencode ssid=test \
  --data-urlencode password=testpass \
  --data-urlencode authentication_mode=WPA2

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "wifi_0/1 mode set to Transparent for ONU with ONU external ID onu_unique_external_id"
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU WiFi port"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Shutdown ONU WiFi port by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/shutdown_wifi_port/{onu_external_id}

Shutdown ONU WiFi port for a specified ONU unique external ID

The request returns succesfully if the ONU WiFi port was shutdown successfully.
It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • no WiFi port was provided
  • wrong WiFi port was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
wifi_portstringbodyYeswifi_0/1

(String) ONU WiFi port

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/shutdown_wifi_port/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode wifi_port=wifi_0/1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "wifi_0/1 WiFi port shutdown for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU WiFi port"
}
POST

Change ONU web user and password by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/change_web_user_pass/{onu_external_id}

Change ONU web user and password for a specified ONU unique external ID

The request returns succesfully if the ONU web user and password were changed successfully.

Important: The SmartOLT TR069 profile must be enabled for the ONU

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • TR069 feature is not enabled

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
web_userstringbodyNotest

(String) Web user. Can contain only alphanumeric characters. A minimum of 5 is required, a maximum of 16 characters is allowed.

web_passstringbodyNotestPass

(String) Web password. Can contain only alphanumeric characters. A minimum of 8 is required, a maximum of 16 characters is allowed.

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/change_web_user_pass/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode web_user=test \
  --data-urlencode web_pass=testPass

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Web user pass changed for ONU with ONU external ID onu_unique_external_id"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Enable ONU IPTV by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/enable_iptv/{onu_external_id}

Enable ONU IPTV for a specified ONU unique external ID

The request returns succesfully if ONU IPTV was enabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • IPTV module not enabled on OLT
  • no IPTV VLAN-ID was provided
  • no IPTV upload speed profile was provided
  • no IPTV download speed profile was provided
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
vlanintegerbodyYes100

(Int) IPTV VLAN-ID

cvlanintegerbodyNo101

(Int) IPTV CVLAN-ID

svlanintegerbodyNo102

(Int) IPTV SVLAN-ID

tag_transform_modestringbodyNotranslate

(String) Tag-transform mode. Allowed values: default, translate, translate-and-add

upload_speed_profile_namestringbodyNo50M

(String) IPTV upload speed profile name

download_speed_profile_namestringbodyNo100M

(String) IPTV upload speed profile name

allowed_macsstringbodyNoโ€”

(String) Allowed MACs, separated by comma

filtered_macsstringbodyNoโ€”

(String) Filtered MACs, separated by comma

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/enable_iptv/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode vlan=100 \
  --data-urlencode cvlan=101 \
  --data-urlencode svlan=102 \
  --data-urlencode tag_transform_mode=translate \
  --data-urlencode upload_speed_profile_name=50M \
  --data-urlencode download_speed_profile_name=100M

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "IPTV enabled"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - Invalid parametersโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: Please specify the ONU IPTV VLAN-ID"
}
POST

Disable ONU IPTV by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/disable_iptv/{onu_external_id}

Disable ONU IPTV for a specified ONU unique external ID

The request returns succesfully if ONU IPTV was disabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • IPTV module not enabled on OLT
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/disable_iptv/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "IPTV disabled"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}
400400 - OLT wasn't able to process commandโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: OLT wasn't able to process the command"
}
POST

Enable ONU CATV by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/enable_catv/{onu_external_id}

Enable ONU CATV for a specified ONU unique external ID

The request returns succesfully if ONU CATV was enabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • CATV not supported by ONU-Type
  • OLT was unable to process the command

Asynchronous mode (async=1)

Send async = 1 to queue the work and return immediately. SmartOLT first does the same checks as in the normal mode. If a check fails, the request returns the same 400 error.

If you do not send async, or you send 0, the request works as described above.

In asynchronous mode:

  • the response tells you that the action was accepted, not what the OLT did
  • the response contains "queued": true
  • if the newest queued action for this ONU is the same action, the ONU is not queued again
  • SmartOLT runs all actions for one ONU in the order it received them
  • OLT errors are not returned in this response. Use check_bulk_task_status to see the result
  • the call counts in the hourly budget for asynchronous calls, not in the normal hourly budget

ONU with queued actions

If the ONU already has queued actions, a request without async is also queued. This keeps the actions in the order SmartOLT received them. The response then contains "queued": true. Do not mark the action as done when you see this field. Use check_bulk_task_status to see the result.

If another request changes this ONU at the same time, the request returns error 409 with error_code onu_busy. Send the request again later.

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
asyncintegerbodyNo1

(Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/enable_catv/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode async=1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "CATV enabled"
}
200200 - OK (async=1)โŒ„
application/json
{
  "response": "The action was queued and is being processed.",
  "response_code": "success",
  "status": true,
  "queued": true
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - OLT wasn't able to process commandโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: OLT wasn't able to process the command"
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}
POST

Enable multiple ONUs CATV by ONU unique external IDs

https://{subdomain}.smartolt.com/api/onu/bulk_enable_catv

The request returns succesfully if ONUs CATV were enabled successfully.

It returns a 400 error code when:

  • another API call to the same method is already in progress
  • no ONU external IDs were provided
  • more than the maximum allowed number of ONUs were provided (A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1)
  • OLT was unable to process the command

Asynchronous mode (async=1)

Send async = 1 to queue the work as a batch action. The request returns immediately. The response tells you which ONUs were accepted, not what the OLT did.

If you do not send async, or you send 0, the request works as described above.

In asynchronous mode:

  • a maximum of 10 000 ONU unique external IDs are allowed
  • accepted ONUs report that the action was queued and is being processed
  • an ONU that already has the same action queued is not queued twice
  • duplicate IDs in one call are collapsed
  • every other ONU carries the reason it was skipped: ONU not found, or subscription expired, the ONU type does not support CATV, or the ONU has no ONU type. An ONU that already has CATV enabled is not queued and reports ONU CATV enabled
  • OLT errors are not returned in this response. Use check_bulk_task_status to see the result for each ONU

Parameters

NameInRequiredExampleDescription
onus_external_idsstringbodyYestest,test1

(String) Comma separated list of ONU unique external IDs. A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1

asyncstringbodyNo1

(Optional, Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/bulk_enable_catv' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode onus_external_ids=test,test1 \
  --data-urlencode async=1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": {
    "test": "ONU test CATV enabled",
    "test1": "ONU test1 CATV enabled"
  }
}
200200 - OK (async=1)โŒ„
application/json
{
  "response": {
    "ONU001": "The action was queued and is being processed.",
    "ONU002": "The same action is already queued for this ONU.",
    "ONU003": "ONU ONU003: CATV not supported by ONU-Type",
    "ONU004": "ONU ONU004 CATV enabled"
  },
  "response_code": "success",
  "status": true
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Disable ONU CATV by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/disable_catv/{onu_external_id}

Disable ONU CATV for a specified ONU unique external ID

To maintain platform stability and fair resource usage for all users, heavy usage may be subject to rate limiting or even revocation of all access to the SmartOLT API.

โ— Restrictions****๐Ÿšซ DO NOT use this endpoint for:

  • repeteadly disabling the same ONTs multiple times per week.

The request returns succesfully if ONU CATV was disabled successfully.
It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • CATV not supported by ONU-Type
  • OLT was unable to process the command

Asynchronous mode (async=1)

Send async = 1 to queue the work and return immediately. SmartOLT first does the same checks as in the normal mode. If a check fails, the request returns the same 400 error.

If you do not send async, or you send 0, the request works as described above.

In asynchronous mode:

  • the response tells you that the action was accepted, not what the OLT did
  • the response contains "queued": true
  • if the newest queued action for this ONU is the same action, the ONU is not queued again
  • SmartOLT runs all actions for one ONU in the order it received them
  • OLT errors are not returned in this response. Use check_bulk_task_status to see the result
  • the call counts in the hourly budget for asynchronous calls, not in the normal hourly budget

ONU with queued actions

If the ONU already has queued actions, a request without async is also queued. This keeps the actions in the order SmartOLT received them. The response then contains "queued": true. Do not mark the action as done when you see this field. Use check_bulk_status to see the result.

If another request changes this ONU at the same time, the request returns error 409 with error_code onu_busy. Send the request again later.

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
asyncintegerbodyNo1

(Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/disable_catv/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode async=1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "CATV disabled"
}
200200 - OK (async=1)โŒ„
application/json
{
  "response": "The action was queued and is being processed.",
  "response_code": "success",
  "status": true,
  "queued": true
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}
400400 - OLT wasn't able to process commandโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: OLT wasn't able to process the command"
}
POST

Disable multiple ONUs CATV by ONU unique external IDs

https://{subdomain}.smartolt.com/api/onu/bulk_disable_catv

To maintain platform stability and fair resource usage for all users, heavy usage may be subject to rate limiting or even revocation of all access to the SmartOLT API.

โ— Restrictions****๐Ÿšซ DO NOT use this endpoint for:

repeteadly disabling the same ONTs multiple times per week.

The request returns succesfully if ONUs CATV were disabled successfully.

It returns a 400 error code when:

  • another API call to the same method is already in progress
  • no ONU external IDs were provided
  • more than the maximum allowed number of ONUs were provided (A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1)
  • OLT was unable to process the command

Asynchronous mode (async=1)

Send async = 1 to queue the work as a batch action. The request returns immediately. The response tells you which ONUs were accepted, not what the OLT did.

If you do not send async, or you send 0, the request works as described above.

In asynchronous mode:

  • a maximum of 10 000 ONU unique external IDs are allowed
  • accepted ONUs report that the action was queued and is being processed
  • an ONU that already has the same action queued is not queued twice
  • duplicate IDs in one call are collapsed
  • every other ONU carries the reason it was skipped: ONU not found, or subscription expired, the ONU type does not support CATV, or the ONU has no ONU type
  • OLT errors are not returned in this response. Use check_bulk_task_status to see the result for each ONU

Parameters

NameInRequiredExampleDescription
onus_external_idsstringbodyYestest,test1

(String) Comma separated list of ONU unique external IDs. A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1

asyncstringbodyNo1

(Optional, Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/bulk_disable_catv' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode onus_external_ids=test,test1 \
  --data-urlencode async=1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": {
    "test": "ONU test CATV disabled",
    "test1": "ONU test1 CATV disabled"
  }
}
200200 - OK (async=1)โŒ„
application/json
{
  "response": {
    "ONU001": "The action was queued and is being processed.",
    "ONU002": "The same action is already queued for this ONU.",
    "ONU003": "ONU ONU003: CATV not supported by ONU-Type"
  },
  "response_code": "success",
  "status": true
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Reboot ONU by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/reboot/{onu_external_id}

Reboot ONU for a specified ONU unique external ID

The request returns succesfully if the ONU reboot command was sent successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/reboot/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Device reboot command sent"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - OLT wasn't able to process commandโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: OLT wasn't able to process the command"
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}
POST

Resync ONU config by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/resync_config/{onu_external_id}

Resync ONU config for a specified ONU unique external ID

The request returns succesfully if the ONU config was resynced successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/resync_config/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Resync config successfully"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - OLT wasn't able to process commandโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: OLT wasn't able to process the command"
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}
POST

Restore ONU factory defaults by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/restore_factory_defaults/{onu_external_id}

Restore ONU factory defaults for a specified ONU unique external ID

The request returns succesfully if the restore ONU factory defaults command was sent successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/restore_factory_defaults/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "Device restore defaults command sent"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}
400400 - OLT wasn't able to process commandโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: OLT wasn't able to process the command"
}
POST

Disable ONU by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/disable/{onu_external_id}

Disable ONU for a specified ONU unique external ID

To maintain platform stability and fair resource usage for all users, heavy usage may be subject to rate limiting or even revocation of all access to the SmartOLT API.

The request returns succesfully if ONU was disabled successfully.
It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command

Asynchronous mode (async=1)

Send async = 1 to queue the work and return immediately. SmartOLT first does the same checks as in the normal mode. If a check fails, the request returns the same 400 error.

If you do not send async, or you send 0, the request works as described above.

In asynchronous mode:

  • the response tells you that the action was accepted, not what the OLT did
  • the response contains "queued": true
  • if the newest queued action for this ONU is the same action, the ONU is not queued again
  • SmartOLT runs all actions for one ONU in the order it received them
  • OLT errors are not returned in this response. Use check_bulk_task_status to see the result
  • the call counts in the hourly budget for asynchronous calls, not in the normal hourly budget

ONU with queued actions

If the ONU already has queued actions, a request without async is also queued. This keeps the actions in the order SmartOLT received them. The response then contains "queued": true. Do not mark the action as done when you see this field. Use check_bulk_task_status to see the result.

If another request changes this ONU at the same time, the request returns error 409 with error_code onu_busy. Send the request again later.

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
asyncintegerbodyNo1

(Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/disable/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode async=1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU disabled"
}
200200 - OK (async=1)โŒ„
application/json
{
  "response": "The action was queued and is being processed.",
  "response_code": "success",
  "status": true,
  "queued": true
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - OLT wasn't able to process commandโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: OLT wasn't able to process the command"
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}
POST

Disable multiple ONUs by ONU unique external IDs

https://{subdomain}.smartolt.com/api/onu/bulk_disable

To maintain platform stability and fair resource usage for all users, heavy usage may be subject to rate limiting or even revocation of all access to the SmartOLT API.

The request returns succesfully if ONUs were disabled successfully.

It returns a 400 error code when:

  • another API call to the same method is already in progress
  • no ONU external IDs were provided
  • more than the maximum allowed number of ONUs were provided (A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1)
  • OLT was unable to process the command

Asynchronous mode (async=1)

Send async = 1 to queue the work as a batch action. The request returns immediately. The response tells you which ONUs were accepted, not what the OLT did.

If you do not send async, or you send 0, the request works as described above.

In asynchronous mode:

  • a maximum of 10 000 ONU unique external IDs are allowed
  • accepted ONUs report that the action was queued and is being processed
  • an ONU that already has the same action queued is not queued twice
  • duplicate IDs in one call are collapsed
  • every other ONU carries the reason it was skipped: ONU not found, or subscription expired
  • OLT errors are not returned in this response. Use check_bulk_task_status to see the result for each ONU

Parameters

NameInRequiredExampleDescription
onus_external_idsstringbodyYestest,test1

(String) Comma separated list of ONU unique external IDs. A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1

asyncstringbodyNo1

(Optional, Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/bulk_disable' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode onus_external_ids=test,test1 \
  --data-urlencode async=1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": {
    "test": "ONU test disabled",
    "test1": "ONU test1 disabled"
  }
}
200200 - OK (async=1)โŒ„
application/json
{
  "response": {
    "ONU001": "The action was queued and is being processed.",
    "ONU002": "The same action is already queued for this ONU.",
    "NOSUCHONU": "ONU not found"
  },
  "response_code": "success",
  "status": true
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Enable ONU by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/enable/{onu_external_id}

Enable ONU for a specified ONU unique external ID

The request returns succesfully if ONU was enabled successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command

Asynchronous mode (async=1)

Send async = 1 to queue the work and return immediately. SmartOLT first does the same checks as in the normal mode. If a check fails, the request returns the same 400 error.

If you do not send async, or you send 0, the request works as described above.

In asynchronous mode:

  • the response tells you that the action was accepted, not what the OLT did
  • the response contains "queued": true
  • if the newest queued action for this ONU is the same action, the ONU is not queued again
  • SmartOLT runs all actions for one ONU in the order it received them
  • OLT errors are not returned in this response. Use check_bulk_task_status to see the result
  • the call counts in the hourly budget for asynchronous calls, not in the normal hourly budget

ONU with queued actions

If the ONU already has queued actions, a request without async is also queued. This keeps the actions in the order SmartOLT received them. The response then contains "queued": true. Do not mark the action as done when you see this field. Use check_bulk_task_status to see the result.

If another request changes this ONU at the same time, the request returns error 409 with error_code onu_busy. Send the request again later.

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”
asyncintegerbodyNo1

(Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/enable/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode async=1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU enabled"
}
200200 - OK (async=1)โŒ„
application/json
{
  "response": "The action was queued and is being processed.",
  "response_code": "success",
  "status": true,
  "queued": true
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}
400400 - OLT wasn't able to process commandโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: OLT wasn't able to process the command"
}
POST

Enable multiple ONUs by ONU unique external IDs

https://{subdomain}.smartolt.com/api/onu/bulk_enable

The request returns succesfully if ONUs were enabled successfully.

It returns a 400 error code when:

  • another API call to the same method is already in progress
  • no ONU external IDs were provided
  • more than the maximum allowed number of ONUs were provided (A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1)
  • OLT was unable to process the command

Asynchronous mode (async=1)

Send async = 1 to queue the work as a batch action. The request returns immediately. The response tells you which ONUs were accepted, not what the OLT did.

If you do not send async, or you send 0, the request works as described above.

In asynchronous mode:

  • a maximum of 10 000 ONU unique external IDs are allowed
  • accepted ONUs report that the action was queued and is being processed
  • an ONU that already has the same action queued is not queued twice
  • duplicate IDs in one call are collapsed
  • every other ONU carries the reason it was skipped: ONU not found, or subscription expired
  • OLT errors are not returned in this response. Use check_bulk_task_status to see the result for each ONU

Parameters

NameInRequiredExampleDescription
onus_external_idsstringbodyYestest,test1

(String) Comma separated list of ONU unique external IDs. A maximum of 50 ONU unique external IDs are allowed, or 10 000 when async is 1

asyncstringbodyNo1

(Optional, Integer) Send 1 to queue the work and return immediately. Send 0 or leave it out to run the work in the request. Default: 0

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/bulk_enable' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode onus_external_ids=test,test1 \
  --data-urlencode async=1

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": {
    "test": "ONU test enabled",
    "test1": "ONU test1 enabled"
  }
}
200200 - OK (async=1)โŒ„
application/json
{
  "response": {
    "ONU001": "The action was queued and is being processed.",
    "ONU002": "The same action is already queued for this ONU.",
    "NOSUCHONU": "ONU not found"
  },
  "response_code": "success",
  "status": true
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
POST

Delete ONU by ONU unique external ID

https://{subdomain}.smartolt.com/api/onu/delete/{onu_external_id}

Delete ONU for a specified ONU unique external ID

The request returns succesfully if ONU was deleted successfully.

It returns a 400 error code when:

  • no ONU external ID was provided
  • no ONU was found for the provided ONU external ID
  • OLT was unable to process the command

Parameters

NameInRequiredExampleDescription
onu_external_idstringpathYesโ€”โ€”

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/delete/{onu_external_id}' \
  --header 'X-Token: YOUR_API_KEY'

Saved responses

200200 - OKโŒ„
application/json
{
  "status": true,
  "response": "ONU was deleted"
}
403403 - ForbiddenโŒ„
application/json
{
  "status": false,
  "error": "Invalid API Key."
}
400400 - OLT wasn't able to process commandโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: OLT wasn't able to process the command"
}
400400 - No ONU for external IDโŒ„
application/json
{
  "status": false,
  "error": "Invalid parameters: No ONU was found for this ONU external ID: test7"
}
POST

Check bulk task status

https://{subdomain}.smartolt.com/api/onu/check_bulk_task_status

Check how the work queued by the bulk endpoints with async=1 is going, detailed per ONU.

Reports the most recent enable, disable, speed profile or CATV task row for each ONU, whichever happened last, so it answers both "is my bulk request still running" and "what happened to it".

status values

valuemeaning
queuedaccepted, not picked up by a worker yet
in_progressa worker is running it now
retryingan attempt failed; more attempts remain (up to 4)
failedout of attempts, or the batch action was stopped, or its task is no longer running
succeededcompleted successfully
no_taskthe ONU exists but has no enable, disable, speed profile or CATV task on record
onu_not_foundno ONU with that external id is visible to this API key

Other fields (absent for no_task / onu_not_found)

  • action โ€” enable, disable, update_speed_profiles, enable_catv or disable_catv. catv_sync means a CATV sync started from the SmartOLT web interface.
  • attempts โ€” attempts made so far.
  • date_start / date_end โ€” null until the worker starts / finishes an attempt.
  • error_message โ€” the error from the last failed attempt, passed through from the OLT where there was one. Always null for succeeded.

The row can also come from an action that was not started by the API, for example a batch action in the SmartOLT web interface or the automatic sync.

Configuration preset tasks are not included. Use check_configuration_preset_task_status for them.

Parameters

NameInRequiredExampleDescription
onus_external_idsstringbodyYesONU001,ONU002

(String) Comma separated list of ONU unique external IDs. A maximum of 10 000 ONU unique external IDs are allowed

Example request

curl --request POST \
  --url 'https://{subdomain}.smartolt.com/api/onu/check_bulk_task_status' \
  --header 'X-Token: YOUR_API_KEY' \
  --data-urlencode onus_external_ids=ONU001,ONU002

Saved responses

200200 - OKโŒ„
application/json
{
  "response": {
    "NOSUCHONU": {
      "status": "onu_not_found"
    },
    "ONU001": {
      "status": "succeeded",
      "action": "enable",
      "attempts": 1,
      "date_start": "2026-09-24 16:59:41",
      "date_end": "2026-09-24 17:00:12",
      "error_message": null
    },
    "ONU002": {
      "status": "failed",
      "action": "disable_catv",
      "attempts": 4,
      "date_start": "2026-09-24 09:19:46",
      "date_end": "2026-09-24 09:19:53",
      "error_message": "OLT unreachable. Please check that the Telnet port TCP on OLT IP is open for connections."
    },
    "ONU003": {
      "status": "queued",
      "action": "update_speed_profiles",
      "attempts": 0,
      "date_start": null,
      "date_end": null,
      "error_message": null
    }
  },
  "response_code": "success",
  "status": true
}