This is the practical API reference for the current 2.x runtime.
For complete request and response schemas, use the OpenAPI document served by
the running app at /docs.
All operator-facing routes are under /api/.... There is one unified API —
no separate v2 surface for simulator, catalog, runtime, or history.
GET /api/meta — product metadata (name, version)GET /api/health — basic health checkGET /api/healthz/ui — operator shell probeGET /api/ws?token=<session-token> — WebSocket handshake
The browser sends ping keepalives; the server replies with pong.
Server push message types:
full_state — sent on connect; snapshot of simulator, traps, stats, and mibsstatus — simulator and trap receiver running statestats — current countersmibs — loaded MIB summarytrap — new trap receivedsimulator_log — new simulator activity entryPOST /api/settings/login — authenticate; returns {token, username}POST /api/settings/logoutGET /api/settings/check — validate active tokenPOST /api/settings/auth — rotate credentialsGET /api/settings/app — read operator app settingsPOST /api/settings/app — update operator app settingsLogin request:
{"username": "admin", "password": "admin123"}
All authenticated endpoints require X-Auth-Token: <token> header.
GET /api/stats/ — aggregated stats (simulator, traps, walker, mibs)DELETE /api/stats/ — reset countersGET /api/simulator/statusPOST /api/simulator/start — {"port": 1061, "community": "public"}POST /api/simulator/stopPOST /api/simulator/restartGET /api/simulator/data — read custom OID overridesPOST /api/simulator/data — save custom OID overridesGET /api/simulator/logs — recent activity logDELETE /api/simulator/logs — clear activity logPOST /api/walk/execute{
"target": "127.0.0.1",
"port": 1061,
"community": "public",
"oid": "1.3.6.1.2.1.1",
"parse": true,
"use_mibs": true
}
Optional json_format: "current" (default) or "grouped".
GET /api/traps/statusPOST /api/traps/start — {"port": 1162, "community": "public", "resolve_mibs": true}POST /api/traps/stopPOST /api/traps/sendGET /api/traps/ — list recent received trap eventsDELETE /api/traps/ — clear received eventsSend request:
{
"target": "127.0.0.1",
"port": 1162,
"community": "public",
"oid": "IF-MIB::linkDown",
"varbinds": [
{"oid": "1.3.6.1.2.1.2.2.1.1.1", "type": "Integer", "value": 1}
]
}
GET /api/mibs/status — loaded modules, failed compile runs, source groupsGET /api/mibs/objects — flat object list from active bundleGET /api/mibs/traps — notification list from active bundleGET /api/mibs/resolve?oid=<oid>&mode=<numeric|symbolic> — OID resolutionPOST /api/mibs/validate-batch — analyze upload before committingPOST /api/mibs/upload — upload and compile MIB filesPOST /api/mibs/reload — recompile all uploaded MIBsPOST /api/mibs/fetch-dependencies — fetch missing dependency MIBsPOST /api/mibs/export — export catalog as JSON or CSVPOST /api/mibs/download — download one stored MIB source or a zip of multiple source filesDELETE /api/mibs/file — delete one uploaded MIB file (body: {"path": "..."})POST /api/mibs/delete-batch — delete multiple uploaded MIB filesDELETE /api/mibs/{filename:path} — delete by path (URL-encoded)GET /api/mibs/status returns both the deduplicated effective runtime view and
the per-source inventory view:
mibs and active_modules — the same deduplicated active module listerrors and failed_modules — the same true-failure listsource_inventory — per-source membership and status, including shadowed rowssource_groups — source-group totals derived from the stored inventorySource-group export requests keep source-group membership. Global or all-module exports stay deduplicated to the active runtime bundle.
Catalog export request body:
{
"format": "json",
"modules": ["IF-MIB"],
"notifications": ["IF-MIB::linkDown"],
"source_groups": ["juniper"],
"export_type": "notifications"
}
Supported export_type values:
catalogsummarymodulesobjectsnotificationsExport responses always include summary, filters, and metadata. JSON
exports may also include:
modulesobjectsnotificationsnotification_membersFor notifications, JSON stays notification-centric and nests the resolved
member details under each notification entry. CSV flattens those member details
into one row per member while retaining the parent notification identity.
Raw source download request body:
{
"paths": ["juniper/JUNIPER-MAG-MIB.mib", "juniper/JUNIPER-IF-MIB.mib"]
}
POST /api/mibs/download returns the original source file for a single path, or
a zip archive when multiple managed source files are requested.
Upload request (multipart):
files[] — one or more .mib, .txt, or .my filessource_group — target upload group (default: common)compile_mode — full (default) or partialGET /api/mibs/browse/modules — list loaded modulesGET /api/mibs/browse/tree/module?module=<name>&type_filter=<type> — module node treeGET /api/mibs/browse/tree/oid?root_oid=<oid>&depth=<n>&module=<name> — OID subtreeGET /api/mibs/browse/search?q=<query>&module=<name>&type_filter=<type> — search nodesGET /api/mibs/browse/node/{oid} — single node detail with breadcrumb and trap objects