@homeflare/distilled-unifi-network 0.2.0 → 0.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.
Files changed (40) hide show
  1. package/README.md +43 -14
  2. package/dist/credentials.d.ts.map +1 -1
  3. package/dist/credentials.js +9 -7
  4. package/dist/credentials.js.map +1 -1
  5. package/dist/errors.d.ts +33 -9
  6. package/dist/errors.d.ts.map +1 -1
  7. package/dist/errors.js +33 -9
  8. package/dist/errors.js.map +1 -1
  9. package/dist/protocol.d.ts.map +1 -1
  10. package/dist/protocol.js +52 -10
  11. package/dist/protocol.js.map +1 -1
  12. package/dist/services/access_control_acl_rules.d.ts +70 -16
  13. package/dist/services/access_control_acl_rules.d.ts.map +1 -1
  14. package/dist/services/access_control_acl_rules.js +35 -8
  15. package/dist/services/access_control_acl_rules.js.map +1 -1
  16. package/dist/services/firewall.d.ts +93 -4
  17. package/dist/services/firewall.d.ts.map +1 -1
  18. package/dist/services/firewall.js +67 -2
  19. package/dist/services/firewall.js.map +1 -1
  20. package/dist/services/hotspot.d.ts +2 -1
  21. package/dist/services/hotspot.d.ts.map +1 -1
  22. package/dist/services/hotspot.js +2 -1
  23. package/dist/services/hotspot.js.map +1 -1
  24. package/dist/services/traffic_matching_lists.d.ts +59 -6
  25. package/dist/services/traffic_matching_lists.d.ts.map +1 -1
  26. package/dist/services/traffic_matching_lists.js +37 -3
  27. package/dist/services/traffic_matching_lists.js.map +1 -1
  28. package/dist/services/wifi_broadcasts.d.ts +3 -2
  29. package/dist/services/wifi_broadcasts.d.ts.map +1 -1
  30. package/dist/services/wifi_broadcasts.js +3 -2
  31. package/dist/services/wifi_broadcasts.js.map +1 -1
  32. package/package.json +1 -1
  33. package/src/credentials.ts +9 -7
  34. package/src/errors.ts +33 -9
  35. package/src/protocol.ts +59 -11
  36. package/src/services/access_control_acl_rules.ts +135 -24
  37. package/src/services/firewall.ts +419 -6
  38. package/src/services/hotspot.ts +3 -2
  39. package/src/services/traffic_matching_lists.ts +138 -9
  40. package/src/services/wifi_broadcasts.ts +5 -4
package/README.md CHANGED
@@ -30,9 +30,21 @@ and relicensing a copy would misstate what it is. See `LICENSE`.
30
30
  `trafficMatchingLists`, `supportingResources`, plus the single-endpoint
31
31
  `applicationInfo` — an Effect-typed operation per API endpoint (73 total
32
32
  across 44 paths), with `catchTag`-able errors for every HTTP status the
33
- protocol layer dispatches on (the spec documents **zero** error responses
34
- on any operation — see `docs/codegen-notes.md#typed-errors` for what that
35
- means for this package's error channel).
33
+ protocol layer dispatches on. No OPERATION documents an error response, but
34
+ the spec's own `components.schemas["Error Message"]` — `{code, message,
35
+ requestId, requestPath, statusCode, statusName, timestamp}`, unreferenced
36
+ by any operation — is decoded by `src/protocol.ts`'s `errorEnvelope`: a
37
+ mapped status (e.g. `NotFound`) gets the vendor's own `message` text
38
+ instead of a bare `HTTP <status>`, but NOT `code`/`requestId`/`statusName`/
39
+ `timestamp` — core's shared `HTTP_STATUS_MAP` dispatch keeps only
40
+ `message` for a mapped class. Those extra fields survive only on
41
+ `UnknownUnifiNetworkError`, the fallback for any status the map doesn't
42
+ cover. `requestPath` is not modeled as its own field anywhere and never
43
+ reaches a `message` (see `src/errors.ts`'s doc comment) — it does still
44
+ sit, un-plucked, inside `UnknownUnifiNetworkError.body` for anyone who
45
+ reads that raw value on purpose. See the distilled clone's
46
+ `packages/unifi-network/docs/codegen-notes.md#typed-errors` (not shipped in
47
+ this package — `src/` is the only thing copied here) for the full account.
36
48
 
37
49
  ```ts
38
50
  import * as UnifiNetwork from '@distilled.cloud/unifi-network'; // aliased onto this package — see docs/distilled-interim.md
@@ -57,20 +69,25 @@ always `@distilled.cloud/unifi-network`, aliased in the consuming package's
57
69
  so the eventual cutover to the real published package is a one-line alias
58
70
  swap with no import changes anywhere in the kit.
59
71
 
60
- ### Authentication is NOT documented in the spec
72
+ ### Authentication is NOT documented in the spec, but is measured for reads
61
73
 
62
74
  `components.securitySchemes` is absent and no operation carries a
63
75
  `security` requirement. The `X-API-KEY` header this SDK sends comes from
64
76
  [Ubiquiti's own Integration API guide](https://developer.ui.com/unifi-integration-api-guide/),
65
- not the machine-readable description — **unverified against a live
66
- console as of this package's creation**; see the auth-probe handoff this
67
- package shipped alongside, and re-verify before depending on it for
68
- anything that writes.
77
+ not the machine-readable description. The auth-probe handoff this package
78
+ shipped alongside was **run live, read-only, on 2026-09-24**: `X-API-KEY`
79
+ against a local console returned HTTP 200 on `GET /v1/info` and
80
+ `GET /v1/sites`; the same key against the cloud-connector shape returned
81
+ 401 (the wrong door for a key minted on a local console, not evidence the
82
+ cloud shape rejects `X-API-KEY` outright). Only reads were probed —
83
+ re-verify before depending on this header for anything that writes.
69
84
 
70
85
  ## Resource-level traps a future provider must not ignore
71
86
 
72
- These are NOT solved in this SDK. Full detail in `src/credentials.ts`'s
73
- own doc comment and `docs/codegen-notes.md`; the headlines:
87
+ These are NOT solved in this SDK. Full detail in `src/credentials.ts`'s own
88
+ doc comment and the distilled clone's
89
+ `packages/unifi-network/docs/codegen-notes.md` (not shipped here — see
90
+ "What's in it" above); the headlines:
74
91
 
75
92
  - **Whole-object PUT.** Nine endpoints (`updateNetwork`,
76
93
  `updateFirewallPolicy`, `updateAclRule`, …) silently _disable_ any field
@@ -86,10 +103,22 @@ own doc comment and `docs/codegen-notes.md`; the headlines:
86
103
  - **Writes that power-cycle or reboot hardware** hide behind ordinary
87
104
  verbs (`executeAdoptedDeviceAction`'s `RESTART`, `executePortAction`'s
88
105
  `POWER_CYCLE`) — treat as gated commands, never declared props.
89
- - **Secrets never become attributes.** The controller API key and the WLAN
90
- pre-shared key (`passphrase` — not caught by core's generic
91
- `SENSITIVE_FIELD_PATTERNS`) are both write-only, sourced from OpenBao at
92
- call time, never read back as plan attributes.
106
+ - **Secrets never become attributes.** The controller API key is one. The
107
+ WLAN pre-shared key (`passphrase`) is **not write-only** — the WiFi
108
+ details GET returns it in the clear, so this SDK now decodes it as
109
+ `Redacted.Redacted<string>` (its name doesn't match core's generic
110
+ `SENSITIVE_FIELD_PATTERNS`, so `sensitivePatterns` is extended
111
+ per-package — see the distilled clone's `scripts/convert.ts`). Both must
112
+ still be sourced from OpenBao at call time and never read back as plan
113
+ attributes — `Redacted` only guards against an accidental log/print, not
114
+ against a provider persisting the unwrapped value into state. A
115
+ `DISTILLED_DEBUG_HTTP=1` session bypasses the guard entirely — core
116
+ prints the raw response body to stderr before any decode runs — never
117
+ set that flag against a real console. A Hotspot voucher's `code` is the
118
+ same shape (`components.schemas["Hotspot voucher details"].properties.code`,
119
+ "Secret code to active the voucher") and now decodes `Redacted` too, via
120
+ a targeted spec patch rather than a name pattern (`code` also names two
121
+ harmless schemas) — no kit provider reads this family yet.
93
122
 
94
123
  ## Scope and next steps
95
124
 
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AA0CA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAG5C,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;;AAaD,qBAAa,WAAY,SAAQ,gBAGH;CAAG;AAOjC,eAAO,MAAM,kBAAkB,wCAgB9B,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,WAAW,WAAY;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,KAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAUxB,CAAC"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AA4CA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAG5C,MAAM,WAAW,MAAM;IACrB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;;AAaD,qBAAa,WAAY,SAAQ,gBAGH;CAAG;AAOjC,eAAO,MAAM,kBAAkB,wCAgB9B,CAAC;AAEF,qFAAqF;AACrF,eAAO,MAAM,WAAW,WAAY;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B,KAAG,KAAK,CAAC,KAAK,CAAC,WAAW,CAUxB,CAAC"}
@@ -18,13 +18,15 @@
18
18
  * persist an `apiBaseUrl` that contains one outside of the caller's own
19
19
  * runtime configuration.
20
20
  *
21
- * ⛔ AUTHENTICATION IS NOT DOCUMENTED IN THE SPEC: `network_v10.4.57_openapi.json`
22
- * declares no `components.securitySchemes` and no operation carries a
23
- * `security` requirement — the `X-API-KEY` header below comes from
24
- * Ubiquiti's own Integration API guide (https://developer.ui.com/unifi-integration-api-guide/),
25
- * not from the machine-readable description. Re-verify this against a live
26
- * console (a request without it should 401) before depending on it in
27
- * anything that writes.
21
+ * ⚠️ AUTHENTICATION IS NOT DOCUMENTED IN THE SPEC, BUT IS MEASURED FOR READS (2026-09-24):
22
+ * `network_v10.4.57_openapi.json` declares no `components.securitySchemes` and no operation
23
+ * carries a `security` requirement — the `X-API-KEY` header below comes from Ubiquiti's own
24
+ * Integration API guide (https://developer.ui.com/unifi-integration-api-guide/), not from the
25
+ * machine-readable description. A hand-run, read-only probe against a live local console
26
+ * confirmed it: `X-API-KEY` on the local shape above returns HTTP 200 on `GET /v1/info` and
27
+ * `GET /v1/sites`. The SAME key returned 401 against the cloud-connector shape — the wrong door
28
+ * for a key minted on a local console, not evidence the cloud shape rejects `X-API-KEY` outright.
29
+ * Only reads were probed: re-verify before depending on this header in anything that writes.
28
30
  *
29
31
  * The key itself is an Integrations → API Key created in the console's own
30
32
  * UI (Settings → Control Plane → Integrations on a local console). It is a
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAY3D;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAU,EAAE;IACnD,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IACzB,OAAO,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,CAAC;IAC5D,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,OAAO,EAG7C,CAAC,yBAAyB,CAAC;CAAG;AAEjC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC;IACjC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,uBAAuB,CAAC;IACpD,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,4BAA4B,CAAC;CAC9D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAC7C,WAAW,EACX,SAAS,CAAC,IAAI,CACZ,MAAM,CAAC,QAAQ,CACb,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;IACd,OAAO,EACL,yFAAyF;CAC5F,CAAC,CACL,EACD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7B,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC;CACzC,CAAC,CAAC,EACH,MAAM,CAAC,KAAK,CACb,CACF,CAAC;AAEF,qFAAqF;AACrF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAG3B,EAA4B,EAAE,CAC7B,KAAK,CAAC,OAAO,CACX,WAAW,EACX,MAAM,CAAC,OAAO,CAAC;IACb,MAAM,EACJ,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;QAC/B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9B,CAAC,CAAC,MAAM,CAAC,MAAM;IACnB,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC;CAChD,CAAC,CACH,CAAC"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAY3D;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAU,EAAE;IACnD,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;IACzB,OAAO,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;QAAE,GAAG,EAAE,CAAC;IAC5D,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,OAAO,WAAY,SAAQ,OAAO,CAAC,OAAO,EAG7C,CAAC,yBAAyB,CAAC;CAAG;AAEjC,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC;IACjC,MAAM,EAAE,YAAY,CAAC,MAAM,CAAC,uBAAuB,CAAC;IACpD,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,4BAA4B,CAAC;CAC9D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,OAAO,CAC7C,WAAW,EACX,SAAS,CAAC,IAAI,CACZ,MAAM,CAAC,QAAQ,CACb,GAAG,EAAE,CACH,IAAI,WAAW,CAAC;IACd,OAAO,EACL,yFAAyF;CAC5F,CAAC,CACL,EACD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IACtC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;IAC7B,UAAU,EAAE,gBAAgB,CAAC,UAAU,CAAC;CACzC,CAAC,CAAC,EACH,MAAM,CAAC,KAAK,CACb,CACF,CAAC;AAEF,qFAAqF;AACrF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAG3B,EAA4B,EAAE,CAC7B,KAAK,CAAC,OAAO,CACX,WAAW,EACX,MAAM,CAAC,OAAO,CAAC;IACb,MAAM,EACJ,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;QAC/B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAC9B,CAAC,CAAC,MAAM,CAAC,MAAM;IACnB,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC;CAChD,CAAC,CACH,CAAC"}
package/dist/errors.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * UniFi Network-specific error types.
3
3
  *
4
- * ⛔ THE SPEC DOCUMENTS ZERO ERROR RESPONSES. Every one of the 73 operations
4
+ * ⛔ NO OPERATION DOCUMENTS AN ERROR RESPONSE. Every one of the 73 operations
5
5
  * in `network_v10.4.57_openapi.json` declares only its success status (65
6
6
  * carry `200`, 8 carry `201`) — there is no per-operation 4xx/5xx, and
7
7
  * unlike Hetzner's spec there isn't even a blanket `4xx`/`5xx` wildcard to
@@ -13,14 +13,27 @@
13
13
  * exactly the situation core's shared map exists for, just with less
14
14
  * upstream signal than usual to say which statuses are actually reachable.
15
15
  *
16
+ * The FAILURE BODY *is* documented, though, just never `$ref`'d from an
17
+ * operation: `components.schemas["Error Message"]` (`{code, message,
18
+ * requestId, requestPath, statusCode, statusName, timestamp}`, T8) sits in
19
+ * the pinned spec with zero references. `src/protocol.ts`'s `errorEnvelope`
20
+ * decodes it, so `message` below is the vendor's own text instead of a bare
21
+ * `HTTP <status>`. `UnknownUnifiNetworkError` carries the matching
22
+ * `requestId`/`statusCode`/`statusName` alongside the raw `body` — every
23
+ * field from that schema EXCEPT `requestPath`, which is dropped rather than
24
+ * surfaced as a first-class field (T3: like the console id/endpoint in
25
+ * `src/credentials.ts`, a request path is caller/console-shaped and must
26
+ * never end up somewhere it gets logged as if it were plain diagnostic
27
+ * text; it is still present, un-plucked, inside `body` for anyone who reads
28
+ * that raw value on purpose).
29
+ *
16
30
  * Re-exports the common HTTP errors from core (nothing UniFi-specific to
17
- * add to the status→class mapping — no documented error envelope shape,
18
- * either, so `UnknownUnifiNetworkError` below carries the raw body rather
19
- * than any parsed `code`/`message` pair) plus the unknown-error and
20
- * parse-error wrappers every package needs.
31
+ * add to the status→class mapping) plus the unknown-error and parse-error
32
+ * wrappers every package needs.
21
33
  *
22
34
  * Known unknowns — confirm against a live console before hardening on them:
23
- * - Exact body shape of a failure (no operation's `responses` gives one).
35
+ * - The `Error Message` schema itself, UNCONFIRMED by any real capture yet
36
+ * (no live call has been made against a console for this work — T8/T16).
24
37
  * - Whether 429 carries `Retry-After` (assume not; see `src/retry.ts`).
25
38
  * - Whether a bad/missing `X-API-KEY` answers 401 or 403 (both are wired
26
39
  * through `HTTP_STATUS_MAP`; only one will actually fire).
@@ -31,6 +44,10 @@ import * as Schema from "effect/Schema";
31
44
  declare const UnknownUnifiNetworkError_base: Schema.Class<UnknownUnifiNetworkError, Schema.TaggedStruct<"UnknownUnifiNetworkError", {
32
45
  readonly code: Schema.optional<Schema.String>;
33
46
  readonly message: Schema.optional<Schema.String>;
47
+ readonly requestId: Schema.optional<Schema.String>;
48
+ readonly statusCode: Schema.optional<Schema.Number>;
49
+ readonly statusName: Schema.optional<Schema.String>;
50
+ readonly timestamp: Schema.optional<Schema.String>;
34
51
  readonly body: Schema.Unknown;
35
52
  }>, import("effect/Cause").YieldableError> & (new (...args: any[]) => {
36
53
  "@distilled.cloud/error/categories": {
@@ -39,9 +56,16 @@ declare const UnknownUnifiNetworkError_base: Schema.Class<UnknownUnifiNetworkErr
39
56
  });
40
57
  /**
41
58
  * Unknown UniFi Network error — returned when a failed response's HTTP
42
- * status has no mapped error class, OR (given the spec's total silence on
43
- * error shapes) as the fallback for any status this SDK has not been told
44
- * about by a real failure yet. Carries the raw body for later cataloging.
59
+ * status has no mapped error class (every status `HTTP_STATUS_MAP` does
60
+ * cover surfaces as that mapped class instead, e.g. `NotFound`, and only
61
+ * carries `message` — core's classes are shared across every provider and
62
+ * are never given UniFi-specific fields). `code`/`requestId`/`statusCode`/
63
+ * `statusName`/`timestamp` come from the vendor's own `Error Message` envelope
64
+ * (`src/protocol.ts`'s `errorEnvelope`, T8) when the failure body parsed as
65
+ * JSON in that shape; `requestPath` is deliberately NOT modeled as a field
66
+ * here (T3) — see the module doc comment. `body` carries the raw parsed
67
+ * JSON (or raw text) for later cataloging regardless of whether it matched
68
+ * the envelope shape.
45
69
  */
46
70
  export declare class UnknownUnifiNetworkError extends UnknownUnifiNetworkError_base {
47
71
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,UAAU,GACX,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,UAAU,IAAI,cAAc,EAC5B,QAAQ,IAAI,YAAY,EACxB,aAAa,IAAI,iBAAiB,EAClC,SAAS,IAAI,aAAa,EAC1B,QAAQ,IAAI,YAAY,EACxB,mBAAmB,IAAI,uBAAuB,EAC/C,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;;;;;;;;;;AAGxC;;;;;GAKG;AACH,qBAAa,wBAAyB,SAAQ,6BAOd;CAAG;;;;;;;;;AAEnC,kCAAkC;AAClC,qBAAa,sBAAuB,SAAQ,2BAMb;CAAG;AAElC;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,wBAAwB,GAAG,sBAAsB,CAAC;AAE7E;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,cAAc,GACd,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,uBAAuB,GACvB,YAAY,CAAC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,UAAU,GACX,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,UAAU,IAAI,cAAc,EAC5B,QAAQ,IAAI,YAAY,EACxB,aAAa,IAAI,iBAAiB,EAClC,SAAS,IAAI,aAAa,EAC1B,QAAQ,IAAI,YAAY,EACxB,mBAAmB,IAAI,uBAAuB,EAC/C,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;;;;;;;;;;;;;;AAGxC;;;;;;;;;;;;GAYG;AACH,qBAAa,wBAAyB,SAAQ,6BAWd;CAAG;;;;;;;;;AAEnC,kCAAkC;AAClC,qBAAa,sBAAuB,SAAQ,2BAMb;CAAG;AAElC;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,wBAAwB,GAAG,sBAAsB,CAAC;AAE7E;;;;;;;;GAQG;AACH,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,cAAc,GACd,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,uBAAuB,GACvB,YAAY,CAAC"}
package/dist/errors.js CHANGED
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * UniFi Network-specific error types.
3
3
  *
4
- * ⛔ THE SPEC DOCUMENTS ZERO ERROR RESPONSES. Every one of the 73 operations
4
+ * ⛔ NO OPERATION DOCUMENTS AN ERROR RESPONSE. Every one of the 73 operations
5
5
  * in `network_v10.4.57_openapi.json` declares only its success status (65
6
6
  * carry `200`, 8 carry `201`) — there is no per-operation 4xx/5xx, and
7
7
  * unlike Hetzner's spec there isn't even a blanket `4xx`/`5xx` wildcard to
@@ -13,14 +13,27 @@
13
13
  * exactly the situation core's shared map exists for, just with less
14
14
  * upstream signal than usual to say which statuses are actually reachable.
15
15
  *
16
+ * The FAILURE BODY *is* documented, though, just never `$ref`'d from an
17
+ * operation: `components.schemas["Error Message"]` (`{code, message,
18
+ * requestId, requestPath, statusCode, statusName, timestamp}`, T8) sits in
19
+ * the pinned spec with zero references. `src/protocol.ts`'s `errorEnvelope`
20
+ * decodes it, so `message` below is the vendor's own text instead of a bare
21
+ * `HTTP <status>`. `UnknownUnifiNetworkError` carries the matching
22
+ * `requestId`/`statusCode`/`statusName` alongside the raw `body` — every
23
+ * field from that schema EXCEPT `requestPath`, which is dropped rather than
24
+ * surfaced as a first-class field (T3: like the console id/endpoint in
25
+ * `src/credentials.ts`, a request path is caller/console-shaped and must
26
+ * never end up somewhere it gets logged as if it were plain diagnostic
27
+ * text; it is still present, un-plucked, inside `body` for anyone who reads
28
+ * that raw value on purpose).
29
+ *
16
30
  * Re-exports the common HTTP errors from core (nothing UniFi-specific to
17
- * add to the status→class mapping — no documented error envelope shape,
18
- * either, so `UnknownUnifiNetworkError` below carries the raw body rather
19
- * than any parsed `code`/`message` pair) plus the unknown-error and
20
- * parse-error wrappers every package needs.
31
+ * add to the status→class mapping) plus the unknown-error and parse-error
32
+ * wrappers every package needs.
21
33
  *
22
34
  * Known unknowns — confirm against a live console before hardening on them:
23
- * - Exact body shape of a failure (no operation's `responses` gives one).
35
+ * - The `Error Message` schema itself, UNCONFIRMED by any real capture yet
36
+ * (no live call has been made against a console for this work — T8/T16).
24
37
  * - Whether 429 carries `Retry-After` (assume not; see `src/retry.ts`).
25
38
  * - Whether a bad/missing `X-API-KEY` answers 401 or 403 (both are wired
26
39
  * through `HTTP_STATUS_MAP`; only one will actually fire).
@@ -30,13 +43,24 @@ import * as Schema from "effect/Schema";
30
43
  import * as Category from "@distilled.cloud/core/category";
31
44
  /**
32
45
  * Unknown UniFi Network error — returned when a failed response's HTTP
33
- * status has no mapped error class, OR (given the spec's total silence on
34
- * error shapes) as the fallback for any status this SDK has not been told
35
- * about by a real failure yet. Carries the raw body for later cataloging.
46
+ * status has no mapped error class (every status `HTTP_STATUS_MAP` does
47
+ * cover surfaces as that mapped class instead, e.g. `NotFound`, and only
48
+ * carries `message` — core's classes are shared across every provider and
49
+ * are never given UniFi-specific fields). `code`/`requestId`/`statusCode`/
50
+ * `statusName`/`timestamp` come from the vendor's own `Error Message` envelope
51
+ * (`src/protocol.ts`'s `errorEnvelope`, T8) when the failure body parsed as
52
+ * JSON in that shape; `requestPath` is deliberately NOT modeled as a field
53
+ * here (T3) — see the module doc comment. `body` carries the raw parsed
54
+ * JSON (or raw text) for later cataloging regardless of whether it matched
55
+ * the envelope shape.
36
56
  */
37
57
  export class UnknownUnifiNetworkError extends Schema.TaggedError()("UnknownUnifiNetworkError", {
38
58
  code: Schema.optional(Schema.String),
39
59
  message: Schema.optional(Schema.String),
60
+ requestId: Schema.optional(Schema.String),
61
+ statusCode: Schema.optional(Schema.Number),
62
+ statusName: Schema.optional(Schema.String),
63
+ timestamp: Schema.optional(Schema.String),
40
64
  body: Schema.Unknown,
41
65
  }).pipe(Category.withServerError) {
42
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,UAAU,GACX,MAAM,8BAA8B,CAAC;AAUtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,gCAAgC,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,EAA4B,CAC1F,0BAA0B,EAC1B;IACE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,MAAM,CAAC,OAAO;CACrB,CACF,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;CAAG;AAEnC,kCAAkC;AAClC,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,WAAW,EAA0B,CACtF,wBAAwB,EACxB;IACE,IAAI,EAAE,MAAM,CAAC,OAAO;IACpB,KAAK,EAAE,MAAM,CAAC,OAAO;CACtB,CACF,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;CAAG"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,EACX,SAAS,EACT,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,UAAU,GACX,MAAM,8BAA8B,CAAC;AAUtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,QAAQ,MAAM,gCAAgC,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,wBAAyB,SAAQ,MAAM,CAAC,WAAW,EAA4B,CAC1F,0BAA0B,EAC1B;IACE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1C,UAAU,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1C,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,IAAI,EAAE,MAAM,CAAC,OAAO;CACrB,CACF,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;CAAG;AAEnC,kCAAkC;AAClC,MAAM,OAAO,sBAAuB,SAAQ,MAAM,CAAC,WAAW,EAA0B,CACtF,wBAAwB,EACxB;IACE,IAAI,EAAE,MAAM,CAAC,OAAO;IACpB,KAAK,EAAE,MAAM,CAAC,OAAO;CACtB,CACF,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC;CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,KAAK,UAAU,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,KAAK,eAAe,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,KAAK,GAAG,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAKhE,OAAO,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,WAAW,GACX,eAAe,CAAC,eAAe,CAAC;AAEpC,gFAAgF;AAChF,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;AAUxE,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CA0BvD,CAAC"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAE3C,OAAO,KAAK,KAAK,UAAU,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,KAAK,eAAe,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,KAAK,GAAG,MAAM,2BAA2B,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAKhE,OAAO,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAE3E;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAC3B,aAAa,GACb,WAAW,GACX,eAAe,CAAC,eAAe,CAAC;AAEpC,gFAAgF;AAChF,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,UAAU,CAAC,UAAU,CAAC;AAgDxE,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CA2BvD,CAAC"}
package/dist/protocol.js CHANGED
@@ -14,12 +14,21 @@
14
14
  * return the object directly; mutations return the created/updated object
15
15
  * (`200`/`201`), never `204`.
16
16
  *
17
- * FAILURE ENVELOPE IS UNKNOWN: no operation in the spec documents an error
18
- * response, so there is no field to read a machine-readable code or message
19
- * from (`errorEnvelope` below always returns undefined, meaning every
20
- * failure falls through to the protocol's raw-text / `HTTP <status>`
21
- * default and `unknownError`). Replace this the first time a real console
22
- * failure is captured and its body shape is known.
17
+ * FAILURE ENVELOPE (T8): no OPERATION documents an error response, but the
18
+ * pinned spec's own `components.schemas["Error Message"]` — `{code,
19
+ * message, requestId, requestPath, statusCode, statusName, timestamp}`,
20
+ * referenced by zero operations — is the vendor's real failure shape.
21
+ * `errorEnvelope` below decodes `code`/`message` from it, which the shared
22
+ * REST protocol folds into every status-mapped error's `message` (so a
23
+ * `NotFound`, say, carries the vendor's own text instead of a bare `HTTP
24
+ * 404`); `unknownError` additionally reads `requestId`/`statusCode`/
25
+ * `statusName`/`timestamp` straight off the parsed body for the fallback
26
+ * `UnknownUnifiNetworkError`. `requestPath` is READ NOWHERE below — it is
27
+ * deliberately excluded from both the envelope and the error's fields (T3;
28
+ * see `src/errors.ts`'s doc comment) — never let it reach a `message`. This
29
+ * is derived from the spec, not yet confirmed against a real captured
30
+ * failure (no live call has been made for this work); the shape may need a
31
+ * correction once one is.
23
32
  */
24
33
  import * as Effect from "effect/Effect";
25
34
  import * as Redacted from "effect/Redacted";
@@ -27,11 +36,43 @@ import { makeRestProtocol, } from "@distilled.cloud/core/protocol-rest";
27
36
  import { Credentials } from "./credentials.js";
28
37
  import { UnknownUnifiNetworkError } from "./errors.js";
29
38
  /**
30
- * No documented failure envelope to parse (see module docs) — every failure
31
- * falls through to the protocol's status-derived default and
32
- * {@link UnknownUnifiNetworkError}.
39
+ * Decode the spec's `Error Message` schema (see module docs, T8): `code` is
40
+ * a dotted string (e.g. `"api.authentication.missing-credentials"`, never
41
+ * numeric in this spec — {@link RestErrorEnvelope}'s `code` allows both
42
+ * because other providers' envelopes use numeric codes), `message` a plain
43
+ * string. Anything else — a non-JSON body, or JSON that isn't this shape —
44
+ * returns `undefined` and the shared protocol falls back to its own
45
+ * `HTTP <status>` default. `requestPath` is READ HERE ON PURPOSE ONLY TO
46
+ * SKIP IT: it is never assigned to `code`/`message`, so it can never reach
47
+ * the `message` string every status-mapped error surfaces (T3).
33
48
  */
34
- const errorEnvelope = (_body) => undefined;
49
+ const errorEnvelope = (body) => {
50
+ if (body === null || typeof body !== "object")
51
+ return undefined;
52
+ const b = body;
53
+ const code = typeof b.code === "string" ? b.code : undefined;
54
+ const message = typeof b.message === "string" ? b.message : undefined;
55
+ if (code === undefined && message === undefined)
56
+ return undefined;
57
+ return { code, message };
58
+ };
59
+ /**
60
+ * The rest of the `Error Message` envelope beyond `code`/`message` —
61
+ * {@link RestErrorEnvelope} has no room for it, so `unknownError` below
62
+ * reads it straight off the parsed body it already receives. Never reads
63
+ * `requestPath` (T3).
64
+ */
65
+ const restEnvelopeFields = (body) => {
66
+ const b = body !== null && typeof body === "object"
67
+ ? body
68
+ : undefined;
69
+ return {
70
+ requestId: typeof b?.requestId === "string" ? b.requestId : undefined,
71
+ statusCode: typeof b?.statusCode === "number" ? b.statusCode : undefined,
72
+ statusName: typeof b?.statusName === "string" ? b.statusName : undefined,
73
+ timestamp: typeof b?.timestamp === "string" ? b.timestamp : undefined,
74
+ };
75
+ };
35
76
  export const UnifiNetworkProtocol = makeRestProtocol({
36
77
  // Resolved on the CALLING fiber per request (the layer is memoized per
37
78
  // process); the Credentials service holds an effect, so a key rotated
@@ -53,6 +94,7 @@ export const UnifiNetworkProtocol = makeRestProtocol({
53
94
  ? String(code)
54
95
  : undefined,
55
96
  message,
97
+ ...restEnvelopeFields(body),
56
98
  body,
57
99
  }),
58
100
  });
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAK5C,OAAO,EACL,gBAAgB,GAEjB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAsB,MAAM,aAAa,CAAC;AAgB3E;;;;GAIG;AACH,MAAM,aAAa,GAAG,CAAC,KAAc,EAAiC,EAAE,CACtE,SAAS,CAAC;AAEZ,MAAM,CAAC,MAAM,oBAAoB,GAC/B,gBAAgB,CAAS;IACvB,uEAAuE;IACvE,sEAAsE;IACtE,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,WAAW,CAAC;QACnC,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC;IACxB,CAAC,CAAC;IACF,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACnB,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QACzC,MAAM,EAAE,kBAAkB;KAC3B,CAAC;IACF,aAAa;IACb,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CACxC,IAAI,wBAAwB,CAAC;QAC3B,IAAI,EACF,OAAO,IAAI,KAAK,QAAQ;YACtB,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,KAAK,SAAS;gBAClB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBACd,CAAC,CAAC,SAAS;QACjB,OAAO;QACP,IAAI;KACL,CAAC;CACL,CAAC,CAAC"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,39 @@ export type { UnifiNetworkOpError, UnifiNetworkOpContext };
5
5
  /** ACL rule action */
6
6
  export type CreateAclRuleRequestAction = "ALLOW" | "BLOCK";
7
7
  export declare const CreateAclRuleRequestAction: any;
8
+ /** IP addresses or subnets */
9
+ export type IPACLRuleEndpointIpAddressesOrSubnetsList = Array<string>;
10
+ export declare const IPACLRuleEndpointIpAddressesOrSubnetsList: S.Schema<IPACLRuleEndpointIpAddressesOrSubnetsList>;
11
+ /** Ports this ACL rule will be applied to. If null, all the rule will be applied to all ports. */
12
+ export type IPACLRuleEndpointPortFilterList = Array<number>;
13
+ export declare const IPACLRuleEndpointPortFilterList: S.Schema<IPACLRuleEndpointPortFilterList>;
14
+ /** Network IDs */
15
+ export type IPACLRuleEndpointNetworkIdsList = Array<string>;
16
+ export declare const IPACLRuleEndpointNetworkIdsList: S.Schema<IPACLRuleEndpointNetworkIdsList>;
17
+ export interface IPACLRuleEndpoint {
18
+ type: string;
19
+ /** IP addresses or subnets */
20
+ ipAddressesOrSubnets?: IPACLRuleEndpointIpAddressesOrSubnetsList;
21
+ /** Ports this ACL rule will be applied to. If null, all the rule will be applied to all ports. */
22
+ portFilter?: IPACLRuleEndpointPortFilterList;
23
+ /** Network IDs */
24
+ networkIds?: IPACLRuleEndpointNetworkIdsList;
25
+ }
26
+ export declare const IPACLRuleEndpoint: S.Schema<IPACLRuleEndpoint>;
27
+ /** Source/destination MAC addresses this ACL rule will apply to. */
28
+ export type MACACLRuleEndpointMacAddressesList = Array<string>;
29
+ export declare const MACACLRuleEndpointMacAddressesList: S.Schema<MACACLRuleEndpointMacAddressesList>;
30
+ export interface MACACLRuleEndpoint {
31
+ type: string;
32
+ /** Source/destination MAC addresses this ACL rule will apply to. */
33
+ macAddresses?: MACACLRuleEndpointMacAddressesList;
34
+ /** MAC address prefix length. When null, full MAC address(-es) will be used. */
35
+ prefixLength?: number;
36
+ }
37
+ export declare const MACACLRuleEndpoint: S.Schema<MACACLRuleEndpoint>;
38
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
39
+ export type CreateAclRuleRequestDestinationFilter = IPACLRuleEndpoint | MACACLRuleEndpoint;
40
+ export declare const CreateAclRuleRequestDestinationFilter: S.Schema<CreateAclRuleRequestDestinationFilter>;
8
41
  /** List of Switch capable device IDs to which the ACL rule will be provisioned. */
9
42
  export type ACLRuleDeviceFilterDeviceIdsList = Array<string>;
10
43
  export declare const ACLRuleDeviceFilterDeviceIdsList: S.Schema<ACLRuleDeviceFilterDeviceIdsList>;
@@ -14,6 +47,9 @@ export interface ACLRuleDeviceFilter {
14
47
  deviceIds?: ACLRuleDeviceFilterDeviceIdsList;
15
48
  }
16
49
  export declare const ACLRuleDeviceFilter: S.Schema<ACLRuleDeviceFilter>;
50
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
51
+ export type CreateAclRuleRequestSourceFilter = IPACLRuleEndpoint | MACACLRuleEndpoint;
52
+ export declare const CreateAclRuleRequestSourceFilter: S.Schema<CreateAclRuleRequestSourceFilter>;
17
53
  export type CreateAclRuleRequestProtocolFilterItem = "TCP" | "UDP";
18
54
  export declare const CreateAclRuleRequestProtocolFilterItem: any;
19
55
  /** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
@@ -25,8 +61,8 @@ export interface CreateAclRuleRequest {
25
61
  action: CreateAclRuleRequestAction | (string & {});
26
62
  /** ACL rule description */
27
63
  description?: string;
28
- /** Shape varies by variant — widened by scripts/convert.ts; see README. */
29
- destinationFilter?: unknown;
64
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
65
+ destinationFilter?: CreateAclRuleRequestDestinationFilter;
30
66
  enabled: boolean;
31
67
  /** IDs of the Switch-capable devices used to enforce the ACL rule. When null, the rule will be provisioned to all switches on the site. */
32
68
  enforcingDeviceFilter?: ACLRuleDeviceFilter;
@@ -34,8 +70,8 @@ export interface CreateAclRuleRequest {
34
70
  index?: number;
35
71
  /** ACL rule name */
36
72
  name: string;
37
- /** Shape varies by variant — widened by scripts/convert.ts; see README. */
38
- sourceFilter?: unknown;
73
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
74
+ sourceFilter?: CreateAclRuleRequestSourceFilter;
39
75
  type: string;
40
76
  /** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
41
77
  protocolFilter?: CreateAclRuleRequestProtocolFilterList;
@@ -46,6 +82,9 @@ export declare const CreateAclRuleRequest: S.Schema<CreateAclRuleRequest>;
46
82
  /** ACL rule action */
47
83
  export type ACLRuleAction = "ALLOW" | "BLOCK";
48
84
  export declare const ACLRuleAction: any;
85
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
86
+ export type ACLRuleDestinationFilter = IPACLRuleEndpoint | MACACLRuleEndpoint;
87
+ export declare const ACLRuleDestinationFilter: S.Schema<ACLRuleDestinationFilter>;
49
88
  export type UserDefinedOrDerivedEntityMetadataSource = "SDWAN";
50
89
  export declare const UserDefinedOrDerivedEntityMetadataSource: any;
51
90
  export interface UserDefinedOrDerivedEntityMetadata {
@@ -53,6 +92,9 @@ export interface UserDefinedOrDerivedEntityMetadata {
53
92
  source?: UserDefinedOrDerivedEntityMetadataSource;
54
93
  }
55
94
  export declare const UserDefinedOrDerivedEntityMetadata: S.Schema<UserDefinedOrDerivedEntityMetadata>;
95
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
96
+ export type ACLRuleSourceFilter = IPACLRuleEndpoint | MACACLRuleEndpoint;
97
+ export declare const ACLRuleSourceFilter: S.Schema<ACLRuleSourceFilter>;
56
98
  export type ACLRuleProtocolFilterItem = "TCP" | "UDP";
57
99
  export declare const ACLRuleProtocolFilterItem: any;
58
100
  /** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
@@ -63,8 +105,8 @@ export interface ACLRule {
63
105
  action: ACLRuleAction;
64
106
  /** ACL rule description */
65
107
  description?: string;
66
- /** Traffic destination filter */
67
- destinationFilter?: unknown;
108
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
109
+ destinationFilter?: ACLRuleDestinationFilter;
68
110
  enabled: boolean;
69
111
  /** IDs of the Switch-capable devices used to enforce the ACL rule. When null, the rule will be provisioned to all switches on the site. */
70
112
  enforcingDeviceFilter?: ACLRuleDeviceFilter;
@@ -75,8 +117,8 @@ export interface ACLRule {
75
117
  metadata: UserDefinedOrDerivedEntityMetadata;
76
118
  /** ACL rule name */
77
119
  name: string;
78
- /** Traffic source filter */
79
- sourceFilter?: unknown;
120
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
121
+ sourceFilter?: ACLRuleSourceFilter;
80
122
  type: string;
81
123
  /** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
82
124
  protocolFilter?: ACLRuleProtocolFilterList;
@@ -117,6 +159,12 @@ export declare const GetAclRulePageRequest: S.Schema<GetAclRulePageRequest>;
117
159
  /** ACL rule action */
118
160
  export type ACLRuleObjectAction = "ALLOW" | "BLOCK";
119
161
  export declare const ACLRuleObjectAction: any;
162
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
163
+ export type ACLRuleObjectDestinationFilter = IPACLRuleEndpoint | MACACLRuleEndpoint;
164
+ export declare const ACLRuleObjectDestinationFilter: S.Schema<ACLRuleObjectDestinationFilter>;
165
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
166
+ export type ACLRuleObjectSourceFilter = IPACLRuleEndpoint | MACACLRuleEndpoint;
167
+ export declare const ACLRuleObjectSourceFilter: S.Schema<ACLRuleObjectSourceFilter>;
120
168
  export type ACLRuleObjectProtocolFilterItem = "TCP" | "UDP";
121
169
  export declare const ACLRuleObjectProtocolFilterItem: any;
122
170
  /** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
@@ -127,8 +175,8 @@ export interface ACLRuleObject {
127
175
  action: ACLRuleObjectAction;
128
176
  /** ACL rule description */
129
177
  description?: string;
130
- /** Traffic destination filter */
131
- destinationFilter?: unknown;
178
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
179
+ destinationFilter?: ACLRuleObjectDestinationFilter;
132
180
  enabled: boolean;
133
181
  /** IDs of the Switch-capable devices used to enforce the ACL rule. When null, the rule will be provisioned to all switches on the site. */
134
182
  enforcingDeviceFilter?: ACLRuleDeviceFilter;
@@ -139,8 +187,8 @@ export interface ACLRuleObject {
139
187
  metadata: UserDefinedOrDerivedEntityMetadata;
140
188
  /** ACL rule name */
141
189
  name: string;
142
- /** Traffic source filter */
143
- sourceFilter?: unknown;
190
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
191
+ sourceFilter?: ACLRuleObjectSourceFilter;
144
192
  type: string;
145
193
  /** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
146
194
  protocolFilter?: ACLRuleObjectProtocolFilterList;
@@ -161,6 +209,12 @@ export declare const IntegrationAclRulePageDto: S.Schema<IntegrationAclRulePageD
161
209
  /** ACL rule action */
162
210
  export type UpdateAclRuleRequestAction = "ALLOW" | "BLOCK";
163
211
  export declare const UpdateAclRuleRequestAction: any;
212
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
213
+ export type UpdateAclRuleRequestDestinationFilter = IPACLRuleEndpoint | MACACLRuleEndpoint;
214
+ export declare const UpdateAclRuleRequestDestinationFilter: S.Schema<UpdateAclRuleRequestDestinationFilter>;
215
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
216
+ export type UpdateAclRuleRequestSourceFilter = IPACLRuleEndpoint | MACACLRuleEndpoint;
217
+ export declare const UpdateAclRuleRequestSourceFilter: S.Schema<UpdateAclRuleRequestSourceFilter>;
164
218
  export type UpdateAclRuleRequestProtocolFilterItem = "TCP" | "UDP";
165
219
  export declare const UpdateAclRuleRequestProtocolFilterItem: any;
166
220
  /** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
@@ -173,8 +227,8 @@ export interface UpdateAclRuleRequest {
173
227
  action: UpdateAclRuleRequestAction | (string & {});
174
228
  /** ACL rule description */
175
229
  description?: string;
176
- /** Shape varies by variant — widened by scripts/convert.ts; see README. */
177
- destinationFilter?: unknown;
230
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
231
+ destinationFilter?: UpdateAclRuleRequestDestinationFilter;
178
232
  enabled: boolean;
179
233
  /** IDs of the Switch-capable devices used to enforce the ACL rule. When null, the rule will be provisioned to all switches on the site. */
180
234
  enforcingDeviceFilter?: ACLRuleDeviceFilter;
@@ -182,8 +236,8 @@ export interface UpdateAclRuleRequest {
182
236
  index?: number;
183
237
  /** ACL rule name */
184
238
  name: string;
185
- /** Shape varies by variant — widened by scripts/convert.ts; see README. */
186
- sourceFilter?: unknown;
239
+ /** Shape depends on the sibling discriminator value — see docs/codegen-notes.md. */
240
+ sourceFilter?: UpdateAclRuleRequestSourceFilter;
187
241
  type: string;
188
242
  /** Protocols this ACL rule will be applied to. When null, the rule will be applied to all protocols. */
189
243
  protocolFilter?: UpdateAclRuleRequestProtocolFilterList;
@@ -1 +1 @@
1
- {"version":3,"file":"access_control_acl_rules.d.ts","sourceRoot":"","sources":["../../src/services/access_control_acl_rules.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"access_control_acl_rules.d.ts","sourceRoot":"","sources":["../../src/services/access_control_acl_rules.ts"],"names":[],"mappings":"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"}