@coffeerunhobby/mcp-ha-connect 1.3.4 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tools/omada/namespace.js +293 -0
- package/dist/tools/omada/namespace.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/docs/CHANGELOG.md +27 -0
- package/openapi.json +1 -1
- package/package.json +1 -1
- package/src/tools/omada/namespace.ts +317 -0
- package/src/version.ts +1 -1
- package/tests/tools/omada/namespace.test.ts +127 -0
|
@@ -116,6 +116,85 @@ export const OMADA_RESOURCES = [
|
|
|
116
116
|
params: [{ name: 'stackId', required: true, description: 'Switch stack identifier' }],
|
|
117
117
|
fetch: (c, a) => c.getSwitchStackDetail(a.params?.stackId ?? '', a.siteId),
|
|
118
118
|
},
|
|
119
|
+
{
|
|
120
|
+
path: '/devices/search',
|
|
121
|
+
kind: 'collection',
|
|
122
|
+
permission: Q,
|
|
123
|
+
estimatedSize: 'small',
|
|
124
|
+
description: 'Search infrastructure devices across all sites by name/MAC/model. Requires searchKey.',
|
|
125
|
+
params: [{ name: 'searchKey', required: true, description: 'Text to match against device name, MAC, or model' }],
|
|
126
|
+
fetch: (c, a) => c.searchDevices(a.params?.searchKey ?? ''),
|
|
127
|
+
},
|
|
128
|
+
// ---- Cable test (switch port diagnostics) -----------------------------
|
|
129
|
+
{
|
|
130
|
+
path: '/devices/cable-test',
|
|
131
|
+
kind: 'container',
|
|
132
|
+
permission: Q,
|
|
133
|
+
description: 'Switch-port cable diagnostics. Children require a switchMac (find via /devices).',
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
path: '/devices/cable-test/ports',
|
|
137
|
+
kind: 'collection',
|
|
138
|
+
permission: Q,
|
|
139
|
+
estimatedSize: 'small',
|
|
140
|
+
description: 'Ports available for cable testing on a switch. Requires switchMac.',
|
|
141
|
+
params: [{ name: 'switchMac', required: true, description: 'Switch MAC address' }],
|
|
142
|
+
fetch: (c, a) => c.readResource({
|
|
143
|
+
pathTemplate: '/sites/{siteId}/cable-test/switches/{switchMac}/ports',
|
|
144
|
+
siteId: a.siteId,
|
|
145
|
+
pathParams: { switchMac: a.params?.switchMac ?? '' },
|
|
146
|
+
}),
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
path: '/devices/cable-test/results',
|
|
150
|
+
kind: 'leaf',
|
|
151
|
+
permission: Q,
|
|
152
|
+
estimatedSize: 'small',
|
|
153
|
+
description: 'Full cable-test results (pair status, length, fault distance) for a switch. Requires switchMac.',
|
|
154
|
+
params: [{ name: 'switchMac', required: true, description: 'Switch MAC address' }],
|
|
155
|
+
fetch: (c, a) => c.readResource({
|
|
156
|
+
pathTemplate: '/sites/{siteId}/cable-test/switches/{switchMac}/full-results',
|
|
157
|
+
siteId: a.siteId,
|
|
158
|
+
pathParams: { switchMac: a.params?.switchMac ?? '' },
|
|
159
|
+
}),
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
path: '/devices/cable-test/logs',
|
|
163
|
+
kind: 'collection',
|
|
164
|
+
permission: Q,
|
|
165
|
+
estimatedSize: 'small',
|
|
166
|
+
description: 'Cable-test run history for a switch. Requires switchMac.',
|
|
167
|
+
params: [{ name: 'switchMac', required: true, description: 'Switch MAC address' }],
|
|
168
|
+
fetch: (c, a) => c.readResource({
|
|
169
|
+
pathTemplate: '/sites/{siteId}/cable-test/switches/{switchMac}/logs',
|
|
170
|
+
siteId: a.siteId,
|
|
171
|
+
pathParams: { switchMac: a.params?.switchMac ?? '' },
|
|
172
|
+
}),
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
path: '/devices/poe',
|
|
176
|
+
kind: 'collection',
|
|
177
|
+
permission: Q,
|
|
178
|
+
paginated: true,
|
|
179
|
+
defaultPageSize: 50,
|
|
180
|
+
estimatedSize: 'small',
|
|
181
|
+
description: 'Per-port PoE status across switches (which ports deliver power, to what, and how much). Paginated.',
|
|
182
|
+
fetch: (c, a) => c.readResource({
|
|
183
|
+
pathTemplate: '/sites/{siteId}/switches/ports/poe-info',
|
|
184
|
+
siteId: a.siteId,
|
|
185
|
+
paginated: true,
|
|
186
|
+
page: a.page,
|
|
187
|
+
pageSize: a.pageSize,
|
|
188
|
+
}),
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
path: '/devices/lldp',
|
|
192
|
+
kind: 'collection',
|
|
193
|
+
permission: Q,
|
|
194
|
+
estimatedSize: 'small',
|
|
195
|
+
description: 'Site-wide LLDP neighbor information (physical link/topology discovery between devices).',
|
|
196
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/lldp', siteId: a.siteId }),
|
|
197
|
+
},
|
|
119
198
|
// ---- Clients (connected users) ----------------------------------------
|
|
120
199
|
{
|
|
121
200
|
path: '/clients',
|
|
@@ -241,6 +320,178 @@ export const OMADA_RESOURCES = [
|
|
|
241
320
|
params: [{ name: 'type', required: false, description: "'User' (default) or 'UPnP'" }],
|
|
242
321
|
fetch: (c, a) => c.getPortForwardingStatus(a.params?.type === 'UPnP' ? 'UPnP' : 'User', a.siteId, a.page ?? 1, a.pageSize ?? 10),
|
|
243
322
|
},
|
|
323
|
+
{
|
|
324
|
+
path: '/network/port-forwarding/rules',
|
|
325
|
+
kind: 'collection',
|
|
326
|
+
permission: Q,
|
|
327
|
+
paginated: true,
|
|
328
|
+
defaultPageSize: 50,
|
|
329
|
+
estimatedSize: 'small',
|
|
330
|
+
description: 'Configured NAT port-forwarding rules (the full rule list, not just status). Paginated — use page/pageSize.',
|
|
331
|
+
fetch: (c, a) => c.readResource({
|
|
332
|
+
pathTemplate: '/sites/{siteId}/nat/port-forwardings',
|
|
333
|
+
siteId: a.siteId,
|
|
334
|
+
paginated: true,
|
|
335
|
+
page: a.page,
|
|
336
|
+
pageSize: a.pageSize,
|
|
337
|
+
}),
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
path: '/network/dhcp-leases',
|
|
341
|
+
kind: 'collection',
|
|
342
|
+
permission: Q,
|
|
343
|
+
paginated: true,
|
|
344
|
+
defaultPageSize: 50,
|
|
345
|
+
estimatedSize: 'medium',
|
|
346
|
+
description: 'Active DHCP leases across all DHCP servers on the site (paginated). Use page/pageSize. See /network/dhcp-reservations for static reservations.',
|
|
347
|
+
fetch: (c, a) => c.readResource({
|
|
348
|
+
pathTemplate: '/sites/{siteId}/setting/service/dhcp/user-list',
|
|
349
|
+
siteId: a.siteId,
|
|
350
|
+
paginated: true,
|
|
351
|
+
page: a.page,
|
|
352
|
+
pageSize: a.pageSize,
|
|
353
|
+
}),
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
path: '/network/load-balance',
|
|
357
|
+
kind: 'leaf',
|
|
358
|
+
permission: Q,
|
|
359
|
+
estimatedSize: 'small',
|
|
360
|
+
description: 'Multi-WAN load-balance status for the gateway (which WANs are up / in the balancing pool).',
|
|
361
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/internet/load-balance/status', siteId: a.siteId }),
|
|
362
|
+
},
|
|
363
|
+
{
|
|
364
|
+
path: '/network/dhcp-reservations',
|
|
365
|
+
kind: 'collection',
|
|
366
|
+
permission: Q,
|
|
367
|
+
paginated: true,
|
|
368
|
+
defaultPageSize: 50,
|
|
369
|
+
estimatedSize: 'small',
|
|
370
|
+
description: 'Static DHCP reservations (each maps a client MAC to a fixed IP). Paginated. See /network/dhcp-leases for active leases.',
|
|
371
|
+
fetch: (c, a) => c.readResource({
|
|
372
|
+
pathTemplate: '/sites/{siteId}/setting/service/dhcp',
|
|
373
|
+
siteId: a.siteId,
|
|
374
|
+
paginated: true,
|
|
375
|
+
page: a.page,
|
|
376
|
+
pageSize: a.pageSize,
|
|
377
|
+
}),
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
path: '/network/static-routes',
|
|
381
|
+
kind: 'collection',
|
|
382
|
+
permission: Q,
|
|
383
|
+
paginated: true,
|
|
384
|
+
defaultPageSize: 50,
|
|
385
|
+
estimatedSize: 'small',
|
|
386
|
+
description: 'Configured static routes for the gateway (destination → next-hop). Paginated.',
|
|
387
|
+
fetch: (c, a) => c.readResource({
|
|
388
|
+
pathTemplate: '/sites/{siteId}/routing/static-routings',
|
|
389
|
+
siteId: a.siteId,
|
|
390
|
+
paginated: true,
|
|
391
|
+
page: a.page,
|
|
392
|
+
pageSize: a.pageSize,
|
|
393
|
+
}),
|
|
394
|
+
},
|
|
395
|
+
{
|
|
396
|
+
path: '/network/ip-mac-binding',
|
|
397
|
+
kind: 'collection',
|
|
398
|
+
permission: Q,
|
|
399
|
+
paginated: true,
|
|
400
|
+
defaultPageSize: 50,
|
|
401
|
+
estimatedSize: 'small',
|
|
402
|
+
description: 'IP↔MAC binding entries (ARP-spoofing protection: which MACs are pinned to which IPs). Paginated.',
|
|
403
|
+
fetch: (c, a) => c.readResource({
|
|
404
|
+
pathTemplate: '/sites/{siteId}/ip-mac-binds',
|
|
405
|
+
siteId: a.siteId,
|
|
406
|
+
paginated: true,
|
|
407
|
+
page: a.page,
|
|
408
|
+
pageSize: a.pageSize,
|
|
409
|
+
}),
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
path: '/network/attack-defense',
|
|
413
|
+
kind: 'leaf',
|
|
414
|
+
permission: Q,
|
|
415
|
+
estimatedSize: 'small',
|
|
416
|
+
description: 'Gateway attack-defense settings (flood/scan/spoof protection toggles and thresholds).',
|
|
417
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/attack-defense', siteId: a.siteId }),
|
|
418
|
+
},
|
|
419
|
+
// ---- Access-control lists (read-only policy visibility) ---------------
|
|
420
|
+
{ path: '/network/acls', kind: 'container', permission: Q, description: 'Access-control lists by enforcement point (gateway, switch, EAP/AP).' },
|
|
421
|
+
{
|
|
422
|
+
path: '/network/acls/gateway',
|
|
423
|
+
kind: 'collection',
|
|
424
|
+
permission: Q,
|
|
425
|
+
paginated: true,
|
|
426
|
+
defaultPageSize: 50,
|
|
427
|
+
estimatedSize: 'small',
|
|
428
|
+
description: 'Gateway ACL rules (osg-acls). Paginated.',
|
|
429
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/acls/osg-acls', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
path: '/network/acls/switch',
|
|
433
|
+
kind: 'collection',
|
|
434
|
+
permission: Q,
|
|
435
|
+
paginated: true,
|
|
436
|
+
defaultPageSize: 50,
|
|
437
|
+
estimatedSize: 'small',
|
|
438
|
+
description: 'Switch ACL rules (osw-acls). Paginated.',
|
|
439
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/acls/osw-acls', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
path: '/network/acls/eap',
|
|
443
|
+
kind: 'collection',
|
|
444
|
+
permission: Q,
|
|
445
|
+
paginated: true,
|
|
446
|
+
defaultPageSize: 50,
|
|
447
|
+
estimatedSize: 'small',
|
|
448
|
+
description: 'EAP/AP ACL rules (eap-acls). Paginated.',
|
|
449
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/acls/eap-acls', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
450
|
+
},
|
|
451
|
+
// ---- URL filtering (content controls) ---------------------------------
|
|
452
|
+
{ path: '/network/url-filters', kind: 'container', permission: Q, description: 'URL-filtering rules (content/parental controls) by enforcement point.' },
|
|
453
|
+
{
|
|
454
|
+
path: '/network/url-filters/gateway',
|
|
455
|
+
kind: 'collection',
|
|
456
|
+
permission: Q,
|
|
457
|
+
paginated: true,
|
|
458
|
+
defaultPageSize: 50,
|
|
459
|
+
estimatedSize: 'small',
|
|
460
|
+
description: 'Gateway URL-filter rules. Paginated.',
|
|
461
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/url-filters/gateway', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
path: '/network/url-filters/eap',
|
|
465
|
+
kind: 'collection',
|
|
466
|
+
permission: Q,
|
|
467
|
+
paginated: true,
|
|
468
|
+
defaultPageSize: 50,
|
|
469
|
+
estimatedSize: 'small',
|
|
470
|
+
description: 'EAP/AP URL-filter rules. Paginated.',
|
|
471
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/url-filters/eap', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
472
|
+
},
|
|
473
|
+
// ---- MAC filtering -----------------------------------------------------
|
|
474
|
+
{ path: '/network/mac-filters', kind: 'container', permission: Q, description: 'Wireless MAC allow/deny filtering lists.' },
|
|
475
|
+
{
|
|
476
|
+
path: '/network/mac-filters/allow',
|
|
477
|
+
kind: 'collection',
|
|
478
|
+
permission: Q,
|
|
479
|
+
paginated: true,
|
|
480
|
+
defaultPageSize: 50,
|
|
481
|
+
estimatedSize: 'small',
|
|
482
|
+
description: 'MAC addresses on the allow list. Paginated.',
|
|
483
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/mac-filters/allow', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
path: '/network/mac-filters/deny',
|
|
487
|
+
kind: 'collection',
|
|
488
|
+
permission: Q,
|
|
489
|
+
paginated: true,
|
|
490
|
+
defaultPageSize: 50,
|
|
491
|
+
estimatedSize: 'small',
|
|
492
|
+
description: 'MAC addresses on the deny list. Paginated.',
|
|
493
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/mac-filters/deny', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
494
|
+
},
|
|
244
495
|
{
|
|
245
496
|
path: '/network/rate-limit-profiles',
|
|
246
497
|
kind: 'collection',
|
|
@@ -312,6 +563,14 @@ export const OMADA_RESOURCES = [
|
|
|
312
563
|
? c.getSsidDetail(a.params.wlanId ?? '', a.params.ssidId, a.siteId)
|
|
313
564
|
: c.getSsidList(a.params?.wlanId ?? '', a.siteId),
|
|
314
565
|
},
|
|
566
|
+
{
|
|
567
|
+
path: '/wifi/band-steering',
|
|
568
|
+
kind: 'leaf',
|
|
569
|
+
permission: Q,
|
|
570
|
+
estimatedSize: 'small',
|
|
571
|
+
description: 'Band-steering settings for the site (steering clients between 2.4/5/6 GHz radios).',
|
|
572
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/band-steering', siteId: a.siteId }),
|
|
573
|
+
},
|
|
315
574
|
// ---- Events / alerts (paginated) --------------------------------------
|
|
316
575
|
{
|
|
317
576
|
path: '/events',
|
|
@@ -400,6 +659,40 @@ export const OMADA_RESOURCES = [
|
|
|
400
659
|
],
|
|
401
660
|
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/dashboard/top-device-memory-usage', siteId: a.siteId, query: resolveUsageWindowSec(a.params) }),
|
|
402
661
|
},
|
|
662
|
+
{
|
|
663
|
+
path: '/dashboard/client-distribution',
|
|
664
|
+
kind: 'leaf',
|
|
665
|
+
permission: Q,
|
|
666
|
+
estimatedSize: 'small',
|
|
667
|
+
description: 'Breakdown of connected clients by category (wired/wireless, band, SSID). No time window required.',
|
|
668
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/dashboard/client-distribution', siteId: a.siteId }),
|
|
669
|
+
},
|
|
670
|
+
{
|
|
671
|
+
path: '/dashboard/traffic-distribution',
|
|
672
|
+
kind: 'leaf',
|
|
673
|
+
permission: Q,
|
|
674
|
+
estimatedSize: 'small',
|
|
675
|
+
description: 'Traffic distribution across the site over a time window (default: last 24h). Override with params.startTime / ' +
|
|
676
|
+
'params.endTime (epoch SECONDS).',
|
|
677
|
+
params: [
|
|
678
|
+
{ name: 'startTime', required: false, description: 'Window start, epoch seconds (default: 24h ago)' },
|
|
679
|
+
{ name: 'endTime', required: false, description: 'Window end, epoch seconds (default: now)' },
|
|
680
|
+
],
|
|
681
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/dashboard/traffic-distribution', siteId: a.siteId, query: resolveUsageWindowSec(a.params) }),
|
|
682
|
+
},
|
|
683
|
+
{
|
|
684
|
+
path: '/dashboard/traffic-activities',
|
|
685
|
+
kind: 'leaf',
|
|
686
|
+
permission: Q,
|
|
687
|
+
estimatedSize: 'medium',
|
|
688
|
+
description: 'Traffic activity over time (a time-series for charting) for the site (default window: last 24h). Override with ' +
|
|
689
|
+
'params.startTime / params.endTime (epoch SECONDS).',
|
|
690
|
+
params: [
|
|
691
|
+
{ name: 'startTime', required: false, description: 'Window start, epoch seconds (default: 24h ago)' },
|
|
692
|
+
{ name: 'endTime', required: false, description: 'Window end, epoch seconds (default: now)' },
|
|
693
|
+
],
|
|
694
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/dashboard/traffic-activities', siteId: a.siteId, query: resolveUsageWindowSec(a.params) }),
|
|
695
|
+
},
|
|
403
696
|
// ---- Firmware ----------------------------------------------------------
|
|
404
697
|
{
|
|
405
698
|
path: '/firmware',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/tools/omada/namespace.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"namespace.js","sourceRoot":"","sources":["../../../src/tools/omada/namespace.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
package/dist/version.js
CHANGED
package/docs/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,30 @@
|
|
|
1
|
+
### 1.4.0
|
|
2
|
+
**Feature — Omada resource graph expanded to broad read coverage (no tool-schema cost).**
|
|
3
|
+
Because `graph` mode keeps the tool surface at two tools (`omada_browse` + `omada_read`)
|
|
4
|
+
regardless of how many resources the manifest declares, the namespace was widened from ~33
|
|
5
|
+
to **54 readable nodes** with zero increase in the tool-schema budget — the "breadth without
|
|
6
|
+
bloat" payoff of progressive disclosure. Every new node is grounded in the controller's own
|
|
7
|
+
OpenAPI spec (required params verified) and the reference TP-Link Omada API client, then
|
|
8
|
+
backed by the existing generic `OmadaClient.readResource()` primitive (no new client code):
|
|
9
|
+
|
|
10
|
+
- *Completed the typed-read parity set* — `/devices/search` (global device search) and
|
|
11
|
+
`/network/load-balance` (multi-WAN status) close the last gaps so every typed Omada read
|
|
12
|
+
getter now has a graph node.
|
|
13
|
+
- *Tier 2 (network insight)* — `/devices/cable-test` (`/ports`, `/results`, `/logs`; requires
|
|
14
|
+
`switchMac`), `/network/port-forwarding/rules` (the full NAT rule list, vs. status only),
|
|
15
|
+
`/network/dhcp-leases` (active leases), and dashboard analytics
|
|
16
|
+
`/dashboard/client-distribution`, `/dashboard/traffic-distribution`,
|
|
17
|
+
`/dashboard/traffic-activities` (the latter two default to a last-24h epoch-seconds window).
|
|
18
|
+
- *Tier 3 (curated home-relevant subset)* — selected from the controller's ~900-endpoint
|
|
19
|
+
long tail, skipping enterprise gear (fiber/OLT, site-templates, RADIUS/LDAP, enterprise
|
|
20
|
+
VPN): `/devices/poe`, `/devices/lldp`, `/network/dhcp-reservations`, `/network/static-routes`,
|
|
21
|
+
`/network/ip-mac-binding`, `/network/attack-defense`, `/network/acls/{gateway,switch,eap}`,
|
|
22
|
+
`/network/url-filters/{gateway,eap}`, `/network/mac-filters/{allow,deny}`, and
|
|
23
|
+
`/wifi/band-steering`. All read-only and QUERY-gated, consistent with `/network/firewall`.
|
|
24
|
+
|
|
25
|
+
Paginated nodes forward a single `page`/`pageSize` to one GET (no page-walking). Suite grew
|
|
26
|
+
by the corresponding namespace wiring tests.
|
|
27
|
+
|
|
1
28
|
### 1.3.4
|
|
2
29
|
**Feature — Omada resource-graph tool registration (`MCP_TOOL_REGISTRATION_MODE`).**
|
|
3
30
|
Implements the previously-designed-but-unbuilt registration-mode switch as a *resource
|
package/openapi.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"openapi": "3.1.0",
|
|
3
3
|
"info": {
|
|
4
4
|
"title": "Home Assistant MCP Wrapper",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.4.0",
|
|
6
6
|
"description": "REST endpoints that wrap MCP tools for Home Assistant integration. Raw JSON-RPC passthrough available at POST / for n8n compatibility."
|
|
7
7
|
},
|
|
8
8
|
"servers": [
|
package/package.json
CHANGED
|
@@ -167,6 +167,90 @@ export const OMADA_RESOURCES: ResourceNode[] = [
|
|
|
167
167
|
params: [{ name: 'stackId', required: true, description: 'Switch stack identifier' }],
|
|
168
168
|
fetch: (c, a) => c.getSwitchStackDetail(a.params?.stackId ?? '', a.siteId),
|
|
169
169
|
},
|
|
170
|
+
{
|
|
171
|
+
path: '/devices/search',
|
|
172
|
+
kind: 'collection',
|
|
173
|
+
permission: Q,
|
|
174
|
+
estimatedSize: 'small',
|
|
175
|
+
description: 'Search infrastructure devices across all sites by name/MAC/model. Requires searchKey.',
|
|
176
|
+
params: [{ name: 'searchKey', required: true, description: 'Text to match against device name, MAC, or model' }],
|
|
177
|
+
fetch: (c, a) => c.searchDevices(a.params?.searchKey ?? ''),
|
|
178
|
+
},
|
|
179
|
+
|
|
180
|
+
// ---- Cable test (switch port diagnostics) -----------------------------
|
|
181
|
+
{
|
|
182
|
+
path: '/devices/cable-test',
|
|
183
|
+
kind: 'container',
|
|
184
|
+
permission: Q,
|
|
185
|
+
description: 'Switch-port cable diagnostics. Children require a switchMac (find via /devices).',
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
path: '/devices/cable-test/ports',
|
|
189
|
+
kind: 'collection',
|
|
190
|
+
permission: Q,
|
|
191
|
+
estimatedSize: 'small',
|
|
192
|
+
description: 'Ports available for cable testing on a switch. Requires switchMac.',
|
|
193
|
+
params: [{ name: 'switchMac', required: true, description: 'Switch MAC address' }],
|
|
194
|
+
fetch: (c, a) =>
|
|
195
|
+
c.readResource({
|
|
196
|
+
pathTemplate: '/sites/{siteId}/cable-test/switches/{switchMac}/ports',
|
|
197
|
+
siteId: a.siteId,
|
|
198
|
+
pathParams: { switchMac: a.params?.switchMac ?? '' },
|
|
199
|
+
}),
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
path: '/devices/cable-test/results',
|
|
203
|
+
kind: 'leaf',
|
|
204
|
+
permission: Q,
|
|
205
|
+
estimatedSize: 'small',
|
|
206
|
+
description: 'Full cable-test results (pair status, length, fault distance) for a switch. Requires switchMac.',
|
|
207
|
+
params: [{ name: 'switchMac', required: true, description: 'Switch MAC address' }],
|
|
208
|
+
fetch: (c, a) =>
|
|
209
|
+
c.readResource({
|
|
210
|
+
pathTemplate: '/sites/{siteId}/cable-test/switches/{switchMac}/full-results',
|
|
211
|
+
siteId: a.siteId,
|
|
212
|
+
pathParams: { switchMac: a.params?.switchMac ?? '' },
|
|
213
|
+
}),
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
path: '/devices/cable-test/logs',
|
|
217
|
+
kind: 'collection',
|
|
218
|
+
permission: Q,
|
|
219
|
+
estimatedSize: 'small',
|
|
220
|
+
description: 'Cable-test run history for a switch. Requires switchMac.',
|
|
221
|
+
params: [{ name: 'switchMac', required: true, description: 'Switch MAC address' }],
|
|
222
|
+
fetch: (c, a) =>
|
|
223
|
+
c.readResource({
|
|
224
|
+
pathTemplate: '/sites/{siteId}/cable-test/switches/{switchMac}/logs',
|
|
225
|
+
siteId: a.siteId,
|
|
226
|
+
pathParams: { switchMac: a.params?.switchMac ?? '' },
|
|
227
|
+
}),
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
path: '/devices/poe',
|
|
231
|
+
kind: 'collection',
|
|
232
|
+
permission: Q,
|
|
233
|
+
paginated: true,
|
|
234
|
+
defaultPageSize: 50,
|
|
235
|
+
estimatedSize: 'small',
|
|
236
|
+
description: 'Per-port PoE status across switches (which ports deliver power, to what, and how much). Paginated.',
|
|
237
|
+
fetch: (c, a) =>
|
|
238
|
+
c.readResource({
|
|
239
|
+
pathTemplate: '/sites/{siteId}/switches/ports/poe-info',
|
|
240
|
+
siteId: a.siteId,
|
|
241
|
+
paginated: true,
|
|
242
|
+
page: a.page,
|
|
243
|
+
pageSize: a.pageSize,
|
|
244
|
+
}),
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
path: '/devices/lldp',
|
|
248
|
+
kind: 'collection',
|
|
249
|
+
permission: Q,
|
|
250
|
+
estimatedSize: 'small',
|
|
251
|
+
description: 'Site-wide LLDP neighbor information (physical link/topology discovery between devices).',
|
|
252
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/lldp', siteId: a.siteId }),
|
|
253
|
+
},
|
|
170
254
|
|
|
171
255
|
// ---- Clients (connected users) ----------------------------------------
|
|
172
256
|
{
|
|
@@ -299,6 +383,193 @@ export const OMADA_RESOURCES: ResourceNode[] = [
|
|
|
299
383
|
fetch: (c, a) =>
|
|
300
384
|
c.getPortForwardingStatus(a.params?.type === 'UPnP' ? 'UPnP' : 'User', a.siteId, a.page ?? 1, a.pageSize ?? 10),
|
|
301
385
|
},
|
|
386
|
+
{
|
|
387
|
+
path: '/network/port-forwarding/rules',
|
|
388
|
+
kind: 'collection',
|
|
389
|
+
permission: Q,
|
|
390
|
+
paginated: true,
|
|
391
|
+
defaultPageSize: 50,
|
|
392
|
+
estimatedSize: 'small',
|
|
393
|
+
description: 'Configured NAT port-forwarding rules (the full rule list, not just status). Paginated — use page/pageSize.',
|
|
394
|
+
fetch: (c, a) =>
|
|
395
|
+
c.readResource({
|
|
396
|
+
pathTemplate: '/sites/{siteId}/nat/port-forwardings',
|
|
397
|
+
siteId: a.siteId,
|
|
398
|
+
paginated: true,
|
|
399
|
+
page: a.page,
|
|
400
|
+
pageSize: a.pageSize,
|
|
401
|
+
}),
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
path: '/network/dhcp-leases',
|
|
405
|
+
kind: 'collection',
|
|
406
|
+
permission: Q,
|
|
407
|
+
paginated: true,
|
|
408
|
+
defaultPageSize: 50,
|
|
409
|
+
estimatedSize: 'medium',
|
|
410
|
+
description: 'Active DHCP leases across all DHCP servers on the site (paginated). Use page/pageSize. See /network/dhcp-reservations for static reservations.',
|
|
411
|
+
fetch: (c, a) =>
|
|
412
|
+
c.readResource({
|
|
413
|
+
pathTemplate: '/sites/{siteId}/setting/service/dhcp/user-list',
|
|
414
|
+
siteId: a.siteId,
|
|
415
|
+
paginated: true,
|
|
416
|
+
page: a.page,
|
|
417
|
+
pageSize: a.pageSize,
|
|
418
|
+
}),
|
|
419
|
+
},
|
|
420
|
+
{
|
|
421
|
+
path: '/network/load-balance',
|
|
422
|
+
kind: 'leaf',
|
|
423
|
+
permission: Q,
|
|
424
|
+
estimatedSize: 'small',
|
|
425
|
+
description: 'Multi-WAN load-balance status for the gateway (which WANs are up / in the balancing pool).',
|
|
426
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/internet/load-balance/status', siteId: a.siteId }),
|
|
427
|
+
},
|
|
428
|
+
{
|
|
429
|
+
path: '/network/dhcp-reservations',
|
|
430
|
+
kind: 'collection',
|
|
431
|
+
permission: Q,
|
|
432
|
+
paginated: true,
|
|
433
|
+
defaultPageSize: 50,
|
|
434
|
+
estimatedSize: 'small',
|
|
435
|
+
description: 'Static DHCP reservations (each maps a client MAC to a fixed IP). Paginated. See /network/dhcp-leases for active leases.',
|
|
436
|
+
fetch: (c, a) =>
|
|
437
|
+
c.readResource({
|
|
438
|
+
pathTemplate: '/sites/{siteId}/setting/service/dhcp',
|
|
439
|
+
siteId: a.siteId,
|
|
440
|
+
paginated: true,
|
|
441
|
+
page: a.page,
|
|
442
|
+
pageSize: a.pageSize,
|
|
443
|
+
}),
|
|
444
|
+
},
|
|
445
|
+
{
|
|
446
|
+
path: '/network/static-routes',
|
|
447
|
+
kind: 'collection',
|
|
448
|
+
permission: Q,
|
|
449
|
+
paginated: true,
|
|
450
|
+
defaultPageSize: 50,
|
|
451
|
+
estimatedSize: 'small',
|
|
452
|
+
description: 'Configured static routes for the gateway (destination → next-hop). Paginated.',
|
|
453
|
+
fetch: (c, a) =>
|
|
454
|
+
c.readResource({
|
|
455
|
+
pathTemplate: '/sites/{siteId}/routing/static-routings',
|
|
456
|
+
siteId: a.siteId,
|
|
457
|
+
paginated: true,
|
|
458
|
+
page: a.page,
|
|
459
|
+
pageSize: a.pageSize,
|
|
460
|
+
}),
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
path: '/network/ip-mac-binding',
|
|
464
|
+
kind: 'collection',
|
|
465
|
+
permission: Q,
|
|
466
|
+
paginated: true,
|
|
467
|
+
defaultPageSize: 50,
|
|
468
|
+
estimatedSize: 'small',
|
|
469
|
+
description: 'IP↔MAC binding entries (ARP-spoofing protection: which MACs are pinned to which IPs). Paginated.',
|
|
470
|
+
fetch: (c, a) =>
|
|
471
|
+
c.readResource({
|
|
472
|
+
pathTemplate: '/sites/{siteId}/ip-mac-binds',
|
|
473
|
+
siteId: a.siteId,
|
|
474
|
+
paginated: true,
|
|
475
|
+
page: a.page,
|
|
476
|
+
pageSize: a.pageSize,
|
|
477
|
+
}),
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
path: '/network/attack-defense',
|
|
481
|
+
kind: 'leaf',
|
|
482
|
+
permission: Q,
|
|
483
|
+
estimatedSize: 'small',
|
|
484
|
+
description: 'Gateway attack-defense settings (flood/scan/spoof protection toggles and thresholds).',
|
|
485
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/attack-defense', siteId: a.siteId }),
|
|
486
|
+
},
|
|
487
|
+
|
|
488
|
+
// ---- Access-control lists (read-only policy visibility) ---------------
|
|
489
|
+
{ path: '/network/acls', kind: 'container', permission: Q, description: 'Access-control lists by enforcement point (gateway, switch, EAP/AP).' },
|
|
490
|
+
{
|
|
491
|
+
path: '/network/acls/gateway',
|
|
492
|
+
kind: 'collection',
|
|
493
|
+
permission: Q,
|
|
494
|
+
paginated: true,
|
|
495
|
+
defaultPageSize: 50,
|
|
496
|
+
estimatedSize: 'small',
|
|
497
|
+
description: 'Gateway ACL rules (osg-acls). Paginated.',
|
|
498
|
+
fetch: (c, a) =>
|
|
499
|
+
c.readResource({ pathTemplate: '/sites/{siteId}/acls/osg-acls', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
500
|
+
},
|
|
501
|
+
{
|
|
502
|
+
path: '/network/acls/switch',
|
|
503
|
+
kind: 'collection',
|
|
504
|
+
permission: Q,
|
|
505
|
+
paginated: true,
|
|
506
|
+
defaultPageSize: 50,
|
|
507
|
+
estimatedSize: 'small',
|
|
508
|
+
description: 'Switch ACL rules (osw-acls). Paginated.',
|
|
509
|
+
fetch: (c, a) =>
|
|
510
|
+
c.readResource({ pathTemplate: '/sites/{siteId}/acls/osw-acls', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
511
|
+
},
|
|
512
|
+
{
|
|
513
|
+
path: '/network/acls/eap',
|
|
514
|
+
kind: 'collection',
|
|
515
|
+
permission: Q,
|
|
516
|
+
paginated: true,
|
|
517
|
+
defaultPageSize: 50,
|
|
518
|
+
estimatedSize: 'small',
|
|
519
|
+
description: 'EAP/AP ACL rules (eap-acls). Paginated.',
|
|
520
|
+
fetch: (c, a) =>
|
|
521
|
+
c.readResource({ pathTemplate: '/sites/{siteId}/acls/eap-acls', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
522
|
+
},
|
|
523
|
+
|
|
524
|
+
// ---- URL filtering (content controls) ---------------------------------
|
|
525
|
+
{ path: '/network/url-filters', kind: 'container', permission: Q, description: 'URL-filtering rules (content/parental controls) by enforcement point.' },
|
|
526
|
+
{
|
|
527
|
+
path: '/network/url-filters/gateway',
|
|
528
|
+
kind: 'collection',
|
|
529
|
+
permission: Q,
|
|
530
|
+
paginated: true,
|
|
531
|
+
defaultPageSize: 50,
|
|
532
|
+
estimatedSize: 'small',
|
|
533
|
+
description: 'Gateway URL-filter rules. Paginated.',
|
|
534
|
+
fetch: (c, a) =>
|
|
535
|
+
c.readResource({ pathTemplate: '/sites/{siteId}/url-filters/gateway', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
536
|
+
},
|
|
537
|
+
{
|
|
538
|
+
path: '/network/url-filters/eap',
|
|
539
|
+
kind: 'collection',
|
|
540
|
+
permission: Q,
|
|
541
|
+
paginated: true,
|
|
542
|
+
defaultPageSize: 50,
|
|
543
|
+
estimatedSize: 'small',
|
|
544
|
+
description: 'EAP/AP URL-filter rules. Paginated.',
|
|
545
|
+
fetch: (c, a) =>
|
|
546
|
+
c.readResource({ pathTemplate: '/sites/{siteId}/url-filters/eap', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
547
|
+
},
|
|
548
|
+
|
|
549
|
+
// ---- MAC filtering -----------------------------------------------------
|
|
550
|
+
{ path: '/network/mac-filters', kind: 'container', permission: Q, description: 'Wireless MAC allow/deny filtering lists.' },
|
|
551
|
+
{
|
|
552
|
+
path: '/network/mac-filters/allow',
|
|
553
|
+
kind: 'collection',
|
|
554
|
+
permission: Q,
|
|
555
|
+
paginated: true,
|
|
556
|
+
defaultPageSize: 50,
|
|
557
|
+
estimatedSize: 'small',
|
|
558
|
+
description: 'MAC addresses on the allow list. Paginated.',
|
|
559
|
+
fetch: (c, a) =>
|
|
560
|
+
c.readResource({ pathTemplate: '/sites/{siteId}/mac-filters/allow', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
path: '/network/mac-filters/deny',
|
|
564
|
+
kind: 'collection',
|
|
565
|
+
permission: Q,
|
|
566
|
+
paginated: true,
|
|
567
|
+
defaultPageSize: 50,
|
|
568
|
+
estimatedSize: 'small',
|
|
569
|
+
description: 'MAC addresses on the deny list. Paginated.',
|
|
570
|
+
fetch: (c, a) =>
|
|
571
|
+
c.readResource({ pathTemplate: '/sites/{siteId}/mac-filters/deny', siteId: a.siteId, paginated: true, page: a.page, pageSize: a.pageSize }),
|
|
572
|
+
},
|
|
302
573
|
{
|
|
303
574
|
path: '/network/rate-limit-profiles',
|
|
304
575
|
kind: 'collection',
|
|
@@ -376,6 +647,14 @@ export const OMADA_RESOURCES: ResourceNode[] = [
|
|
|
376
647
|
? c.getSsidDetail(a.params.wlanId ?? '', a.params.ssidId, a.siteId)
|
|
377
648
|
: c.getSsidList(a.params?.wlanId ?? '', a.siteId),
|
|
378
649
|
},
|
|
650
|
+
{
|
|
651
|
+
path: '/wifi/band-steering',
|
|
652
|
+
kind: 'leaf',
|
|
653
|
+
permission: Q,
|
|
654
|
+
estimatedSize: 'small',
|
|
655
|
+
description: 'Band-steering settings for the site (steering clients between 2.4/5/6 GHz radios).',
|
|
656
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/band-steering', siteId: a.siteId }),
|
|
657
|
+
},
|
|
379
658
|
|
|
380
659
|
// ---- Events / alerts (paginated) --------------------------------------
|
|
381
660
|
{
|
|
@@ -472,6 +751,44 @@ export const OMADA_RESOURCES: ResourceNode[] = [
|
|
|
472
751
|
fetch: (c, a) =>
|
|
473
752
|
c.readResource({ pathTemplate: '/sites/{siteId}/dashboard/top-device-memory-usage', siteId: a.siteId, query: resolveUsageWindowSec(a.params) }),
|
|
474
753
|
},
|
|
754
|
+
{
|
|
755
|
+
path: '/dashboard/client-distribution',
|
|
756
|
+
kind: 'leaf',
|
|
757
|
+
permission: Q,
|
|
758
|
+
estimatedSize: 'small',
|
|
759
|
+
description: 'Breakdown of connected clients by category (wired/wireless, band, SSID). No time window required.',
|
|
760
|
+
fetch: (c, a) => c.readResource({ pathTemplate: '/sites/{siteId}/dashboard/client-distribution', siteId: a.siteId }),
|
|
761
|
+
},
|
|
762
|
+
{
|
|
763
|
+
path: '/dashboard/traffic-distribution',
|
|
764
|
+
kind: 'leaf',
|
|
765
|
+
permission: Q,
|
|
766
|
+
estimatedSize: 'small',
|
|
767
|
+
description:
|
|
768
|
+
'Traffic distribution across the site over a time window (default: last 24h). Override with params.startTime / ' +
|
|
769
|
+
'params.endTime (epoch SECONDS).',
|
|
770
|
+
params: [
|
|
771
|
+
{ name: 'startTime', required: false, description: 'Window start, epoch seconds (default: 24h ago)' },
|
|
772
|
+
{ name: 'endTime', required: false, description: 'Window end, epoch seconds (default: now)' },
|
|
773
|
+
],
|
|
774
|
+
fetch: (c, a) =>
|
|
775
|
+
c.readResource({ pathTemplate: '/sites/{siteId}/dashboard/traffic-distribution', siteId: a.siteId, query: resolveUsageWindowSec(a.params) }),
|
|
776
|
+
},
|
|
777
|
+
{
|
|
778
|
+
path: '/dashboard/traffic-activities',
|
|
779
|
+
kind: 'leaf',
|
|
780
|
+
permission: Q,
|
|
781
|
+
estimatedSize: 'medium',
|
|
782
|
+
description:
|
|
783
|
+
'Traffic activity over time (a time-series for charting) for the site (default window: last 24h). Override with ' +
|
|
784
|
+
'params.startTime / params.endTime (epoch SECONDS).',
|
|
785
|
+
params: [
|
|
786
|
+
{ name: 'startTime', required: false, description: 'Window start, epoch seconds (default: 24h ago)' },
|
|
787
|
+
{ name: 'endTime', required: false, description: 'Window end, epoch seconds (default: now)' },
|
|
788
|
+
],
|
|
789
|
+
fetch: (c, a) =>
|
|
790
|
+
c.readResource({ pathTemplate: '/sites/{siteId}/dashboard/traffic-activities', siteId: a.siteId, query: resolveUsageWindowSec(a.params) }),
|
|
791
|
+
},
|
|
475
792
|
|
|
476
793
|
// ---- Firmware ----------------------------------------------------------
|
|
477
794
|
{
|
package/src/version.ts
CHANGED
|
@@ -22,6 +22,11 @@ function makeRecordingClient(): { client: any; calls: Array<Record<string, unkno
|
|
|
22
22
|
calls.push(opts);
|
|
23
23
|
return Promise.resolve({ ok: true });
|
|
24
24
|
},
|
|
25
|
+
// Typed client methods backing a few graph nodes (recorded like readResource).
|
|
26
|
+
searchDevices: (searchKey: string) => {
|
|
27
|
+
calls.push({ __method: 'searchDevices', searchKey });
|
|
28
|
+
return Promise.resolve([]);
|
|
29
|
+
},
|
|
25
30
|
};
|
|
26
31
|
return { client, calls };
|
|
27
32
|
}
|
|
@@ -254,3 +259,125 @@ describe('Omada namespace - fixed node wiring', () => {
|
|
|
254
259
|
}
|
|
255
260
|
});
|
|
256
261
|
});
|
|
262
|
+
|
|
263
|
+
describe('Omada namespace - Tier-2 / loose-end node wiring', () => {
|
|
264
|
+
it('/devices/search forwards searchKey to the typed client method', async () => {
|
|
265
|
+
const opts = await fetchOpts('/devices/search', { params: { searchKey: 'switch' } });
|
|
266
|
+
expect(opts.__method).toBe('searchDevices');
|
|
267
|
+
expect(opts.searchKey).toBe('switch');
|
|
268
|
+
});
|
|
269
|
+
|
|
270
|
+
it('/devices/cable-test is a browse-only container', () => {
|
|
271
|
+
const node = getResourceNode('/devices/cable-test');
|
|
272
|
+
expect(node?.kind).toBe('container');
|
|
273
|
+
expect(node?.fetch).toBeUndefined();
|
|
274
|
+
const children = childrenOf('/devices/cable-test').map((n) => n.path);
|
|
275
|
+
expect(children).toEqual(
|
|
276
|
+
expect.arrayContaining(['/devices/cable-test/ports', '/devices/cable-test/results', '/devices/cable-test/logs'])
|
|
277
|
+
);
|
|
278
|
+
});
|
|
279
|
+
|
|
280
|
+
it('cable-test nodes substitute switchMac into the path template', async () => {
|
|
281
|
+
const cases: Array<[string, string]> = [
|
|
282
|
+
['/devices/cable-test/ports', '/sites/{siteId}/cable-test/switches/{switchMac}/ports'],
|
|
283
|
+
['/devices/cable-test/results', '/sites/{siteId}/cable-test/switches/{switchMac}/full-results'],
|
|
284
|
+
['/devices/cable-test/logs', '/sites/{siteId}/cable-test/switches/{switchMac}/logs'],
|
|
285
|
+
];
|
|
286
|
+
for (const [path, tmpl] of cases) {
|
|
287
|
+
const opts = await fetchOpts(path, { params: { switchMac: 'AA-BB-CC-DD-EE-FF' } });
|
|
288
|
+
expect(opts.pathTemplate).toBe(tmpl);
|
|
289
|
+
expect((opts.pathParams as Record<string, string>).switchMac).toBe('AA-BB-CC-DD-EE-FF');
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
it('/network/port-forwarding/rules reads the NAT rule list, paginated', async () => {
|
|
294
|
+
const opts = await fetchOpts('/network/port-forwarding/rules', { page: 3, pageSize: 20 });
|
|
295
|
+
expect(opts.pathTemplate).toBe('/sites/{siteId}/nat/port-forwardings');
|
|
296
|
+
expect(opts.paginated).toBe(true);
|
|
297
|
+
expect(opts.page).toBe(3);
|
|
298
|
+
expect(opts.pageSize).toBe(20);
|
|
299
|
+
});
|
|
300
|
+
|
|
301
|
+
it('/network/dhcp-leases reads the DHCP user-list, paginated', async () => {
|
|
302
|
+
const opts = await fetchOpts('/network/dhcp-leases');
|
|
303
|
+
expect(opts.pathTemplate).toBe('/sites/{siteId}/setting/service/dhcp/user-list');
|
|
304
|
+
expect(opts.paginated).toBe(true);
|
|
305
|
+
});
|
|
306
|
+
|
|
307
|
+
it('/network/load-balance reads WAN load-balance status (no params)', async () => {
|
|
308
|
+
const opts = await fetchOpts('/network/load-balance');
|
|
309
|
+
expect(opts.pathTemplate).toBe('/sites/{siteId}/internet/load-balance/status');
|
|
310
|
+
expect(opts.paginated).toBeFalsy();
|
|
311
|
+
});
|
|
312
|
+
|
|
313
|
+
it('/dashboard/client-distribution reads with no time window', async () => {
|
|
314
|
+
const opts = await fetchOpts('/dashboard/client-distribution');
|
|
315
|
+
expect(opts.pathTemplate).toBe('/sites/{siteId}/dashboard/client-distribution');
|
|
316
|
+
expect(opts.query).toBeUndefined();
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
it('/dashboard/traffic-distribution and /dashboard/traffic-activities forward a second-precision window', async () => {
|
|
320
|
+
for (const path of ['/dashboard/traffic-distribution', '/dashboard/traffic-activities']) {
|
|
321
|
+
const opts = await fetchOpts(path);
|
|
322
|
+
const query = opts.query as Record<string, number>;
|
|
323
|
+
expect(query.start).toBeTypeOf('number');
|
|
324
|
+
expect(query.end).toBeTypeOf('number');
|
|
325
|
+
expect(query.end).toBeGreaterThan(query.start);
|
|
326
|
+
// 10-digit epoch-seconds, not ms.
|
|
327
|
+
expect(String(query.end).length).toBeLessThanOrEqual(11);
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
});
|
|
331
|
+
|
|
332
|
+
describe('Omada namespace - Tier-3 curated node wiring', () => {
|
|
333
|
+
// Each entry: graph path → expected controller path template (all paginated unless noted).
|
|
334
|
+
const PAGINATED: Array<[string, string]> = [
|
|
335
|
+
['/devices/poe', '/sites/{siteId}/switches/ports/poe-info'],
|
|
336
|
+
['/network/dhcp-reservations', '/sites/{siteId}/setting/service/dhcp'],
|
|
337
|
+
['/network/static-routes', '/sites/{siteId}/routing/static-routings'],
|
|
338
|
+
['/network/ip-mac-binding', '/sites/{siteId}/ip-mac-binds'],
|
|
339
|
+
['/network/acls/gateway', '/sites/{siteId}/acls/osg-acls'],
|
|
340
|
+
['/network/acls/switch', '/sites/{siteId}/acls/osw-acls'],
|
|
341
|
+
['/network/acls/eap', '/sites/{siteId}/acls/eap-acls'],
|
|
342
|
+
['/network/url-filters/gateway', '/sites/{siteId}/url-filters/gateway'],
|
|
343
|
+
['/network/url-filters/eap', '/sites/{siteId}/url-filters/eap'],
|
|
344
|
+
['/network/mac-filters/allow', '/sites/{siteId}/mac-filters/allow'],
|
|
345
|
+
['/network/mac-filters/deny', '/sites/{siteId}/mac-filters/deny'],
|
|
346
|
+
];
|
|
347
|
+
const SIMPLE: Array<[string, string]> = [
|
|
348
|
+
['/devices/lldp', '/sites/{siteId}/lldp'],
|
|
349
|
+
['/network/attack-defense', '/sites/{siteId}/attack-defense'],
|
|
350
|
+
['/wifi/band-steering', '/sites/{siteId}/band-steering'],
|
|
351
|
+
];
|
|
352
|
+
|
|
353
|
+
it('paginated Tier-3 nodes map to the correct controller path and forward page/pageSize', async () => {
|
|
354
|
+
for (const [path, tmpl] of PAGINATED) {
|
|
355
|
+
const opts = await fetchOpts(path, { page: 2, pageSize: 10 });
|
|
356
|
+
expect(opts.pathTemplate).toBe(tmpl);
|
|
357
|
+
expect(opts.paginated).toBe(true);
|
|
358
|
+
expect(opts.page).toBe(2);
|
|
359
|
+
expect(opts.pageSize).toBe(10);
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
it('simple Tier-3 nodes map to the correct controller path with no pagination', async () => {
|
|
364
|
+
for (const [path, tmpl] of SIMPLE) {
|
|
365
|
+
const opts = await fetchOpts(path);
|
|
366
|
+
expect(opts.pathTemplate).toBe(tmpl);
|
|
367
|
+
expect(opts.paginated).toBeFalsy();
|
|
368
|
+
}
|
|
369
|
+
});
|
|
370
|
+
|
|
371
|
+
it('Tier-3 grouping containers are browse-only with the expected children', () => {
|
|
372
|
+
const groups: Array<[string, string[]]> = [
|
|
373
|
+
['/network/acls', ['/network/acls/gateway', '/network/acls/switch', '/network/acls/eap']],
|
|
374
|
+
['/network/url-filters', ['/network/url-filters/gateway', '/network/url-filters/eap']],
|
|
375
|
+
['/network/mac-filters', ['/network/mac-filters/allow', '/network/mac-filters/deny']],
|
|
376
|
+
];
|
|
377
|
+
for (const [parent, kids] of groups) {
|
|
378
|
+
expect(getResourceNode(parent)?.kind).toBe('container');
|
|
379
|
+
expect(getResourceNode(parent)?.fetch).toBeUndefined();
|
|
380
|
+
expect(childrenOf(parent).map((n) => n.path)).toEqual(expect.arrayContaining(kids));
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
});
|