@smplkit/sdk 3.0.51 → 3.0.53

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/index.d.ts CHANGED
@@ -5,25 +5,61 @@ import createClient from 'openapi-fetch';
5
5
  *
6
6
  * ADR-047 §2.3.1.
7
7
  */
8
+ /**
9
+ * A single audit event as returned by the audit service. ADR-047 §2.3.1.
10
+ */
8
11
  interface AuditEvent {
12
+ /** Server-assigned UUID for this event. */
9
13
  id: string;
14
+ /** Action slug — e.g. `"user.created"`, `"invoice.paid"`. */
10
15
  action: string;
16
+ /** Type of resource the action operated on — e.g. `"invoice"`. */
11
17
  resourceType: string;
18
+ /** Customer-facing id of the resource the action operated on. */
12
19
  resourceId: string;
20
+ /** ISO-8601-with-offset timestamp of when the action actually happened. */
13
21
  occurredAt: string;
22
+ /** ISO-8601-with-offset timestamp of when the audit service ingested the event. */
14
23
  createdAt: string;
24
+ /**
25
+ * Type of the actor that performed the action (`"user"`, `"api_key"`,
26
+ * `"system"`, …). Empty string when unknown.
27
+ */
15
28
  actorType: string;
29
+ /**
30
+ * UUID of the actor, when the actor is a tracked entity
31
+ * (user, api_key). `null` for system actors or anonymous events.
32
+ */
16
33
  actorId: string | null;
34
+ /**
35
+ * Display label for the actor — typically a name or email. Empty
36
+ * string when unknown.
37
+ */
17
38
  actorLabel: string;
39
+ /**
40
+ * Free-form per-event payload defined by the customer. Surfaced on
41
+ * the audit-event resource as a structured JSONB column.
42
+ */
18
43
  data: Record<string, unknown>;
44
+ /** Customer-supplied dedupe key. Empty when the customer didn't supply one. */
19
45
  idempotencyKey: string;
46
+ /**
47
+ * When `true`, the audit service records the event but skips SIEM
48
+ * forwarder delivery regardless of any matching forwarder filter.
49
+ */
20
50
  doNotForward: boolean;
21
51
  }
52
+ /**
53
+ * Inputs for `client.audit.events.record(...)`.
54
+ */
22
55
  interface CreateEventInput {
56
+ /** Action slug — e.g. `"invoice.paid"`. */
23
57
  action: string;
58
+ /** Type of resource the action operated on. */
24
59
  resourceType: string;
60
+ /** Customer-facing id of the resource. */
25
61
  resourceId: string;
26
- /** Defaults to server-side now() if omitted. */
62
+ /** Defaults to server-side `now()` if omitted. */
27
63
  occurredAt?: Date | string;
28
64
  /**
29
65
  * Free-form contextual JSON. To record a resource snapshot, nest it
@@ -34,34 +70,57 @@ interface CreateEventInput {
34
70
  /** Optional caller-supplied idempotency key. Server derives one from event content if absent. */
35
71
  idempotencyKey?: string;
36
72
  /**
37
- * When true, the audit service records the event normally but does NOT POST
38
- * it through any configured SIEM forwarder. A `skipped_do_not_forward`
39
- * delivery row is recorded for each enabled forwarder so the skip is
40
- * visible in the forwarder delivery log.
73
+ * When `true`, the audit service records the event normally but does
74
+ * NOT POST it through any configured SIEM forwarder. A
75
+ * `skipped_do_not_forward` delivery row is recorded for each enabled
76
+ * forwarder so the skip is visible in the forwarder delivery log.
41
77
  */
42
78
  doNotForward?: boolean;
43
79
  }
80
+ /**
81
+ * Parameters accepted by `client.audit.events.list(...)`. Cursor
82
+ * paginated per ADR-014; pass {@link pageAfter} from the prior page's
83
+ * `nextCursor` to walk forward.
84
+ */
44
85
  interface ListEventsParams {
86
+ /** Filter to this action slug. */
45
87
  action?: string;
88
+ /** Filter to this resource_type slug. */
46
89
  resourceType?: string;
90
+ /** Filter to this resource id. */
47
91
  resourceId?: string;
92
+ /** Filter to this actor type. */
48
93
  actorType?: string;
94
+ /** Filter to this actor id. */
49
95
  actorId?: string;
50
- /** Range notation per ADR-014, e.g. `[2026-01-01T00:00:00Z,*)`. */
96
+ /** Range notation per ADR-014, e.g. `"[2026-01-01T00:00:00Z,*)"`. */
51
97
  occurredAtRange?: string;
98
+ /** Items per page (1–1000). Defaults to 1000. */
52
99
  pageSize?: number;
100
+ /** Opaque cursor returned by the prior page's `nextCursor`. */
53
101
  pageAfter?: string;
54
102
  }
103
+ /**
104
+ * Page of events returned by `client.audit.events.list(...)`.
105
+ */
55
106
  interface ListEventsPage {
107
+ /** Events on this page, newest first. */
56
108
  events: AuditEvent[];
57
- /** Opaque cursor for the next page, or null if this is the last page. */
109
+ /** Opaque cursor for the next page, or `null` if this is the last page. */
58
110
  nextCursor: string | null;
59
111
  }
112
+ /**
113
+ * A distinct `resource_type` slug seen for the account.
114
+ */
60
115
  interface ResourceType {
61
- /** The resource_type slug. */
116
+ /** The resource_type slug, surfaced as the JSON:API resource id. */
62
117
  id: string;
118
+ /** ISO-8601 timestamp of the earliest sighting for the account. */
63
119
  createdAt: string;
64
120
  }
121
+ /**
122
+ * Parameters accepted by `client.audit.resourceTypes.list(...)`.
123
+ */
65
124
  interface ListResourceTypesParams {
66
125
  /** 1-based page number to return. Defaults to 1. */
67
126
  pageNumber?: number;
@@ -70,15 +129,32 @@ interface ListResourceTypesParams {
70
129
  /** Include `total` and `totalPages` in {@link Pagination}. Defaults to false. */
71
130
  metaTotal?: boolean;
72
131
  }
132
+ /**
133
+ * Page of resource types returned by
134
+ * `client.audit.resourceTypes.list(...)`.
135
+ */
73
136
  interface ListResourceTypesPage {
137
+ /** Resource types on this page, alphabetically sorted. */
74
138
  resourceTypes: ResourceType[];
139
+ /** Pagination metadata. */
75
140
  pagination: Pagination;
76
141
  }
142
+ /**
143
+ * A distinct action slug seen for the account.
144
+ */
77
145
  interface Action {
78
- /** The action slug. */
146
+ /** The action slug, surfaced as the JSON:API resource id. */
79
147
  id: string;
148
+ /**
149
+ * ISO-8601 timestamp of the earliest sighting for the account. When
150
+ * the list call was filtered by `resourceType`, this is the first
151
+ * sighting of that specific (action, resource_type) pair.
152
+ */
80
153
  createdAt: string;
81
154
  }
155
+ /**
156
+ * Parameters accepted by `client.audit.actions.list(...)`.
157
+ */
82
158
  interface ListActionsParams {
83
159
  /** When set, returns only the actions seen with this resource_type. */
84
160
  filterResourceType?: string;
@@ -89,61 +165,204 @@ interface ListActionsParams {
89
165
  /** Include `total` and `totalPages` in {@link Pagination}. Defaults to false. */
90
166
  metaTotal?: boolean;
91
167
  }
168
+ /**
169
+ * Page of actions returned by `client.audit.actions.list(...)`.
170
+ */
92
171
  interface ActionListPage {
172
+ /** Actions on this page, alphabetically sorted. */
93
173
  actions: Action[];
174
+ /** Pagination metadata. */
94
175
  pagination: Pagination;
95
176
  }
177
+ /**
178
+ * A single name/value HTTP header on a forwarder destination.
179
+ */
96
180
  interface HttpHeader {
181
+ /** Header name (e.g. `"Authorization"`, `"DD-API-KEY"`). */
97
182
  name: string;
183
+ /**
184
+ * Header value, plaintext on writes. The audit service encrypts values
185
+ * at rest; reads return them as `"<redacted>"`.
186
+ */
98
187
  value: string;
99
188
  }
100
189
  /**
101
190
  * Supported SIEM forwarder destination types.
102
191
  *
103
- * ADR-047 §2.12. Mirrors the OpenAPI ``ForwarderType`` enum so callers
104
- * see autocomplete and the compiler rejects typos at build time. The
105
- * runtime values are a subset of the published constant
106
- * {@link FORWARDER_TYPES} for callers that need to iterate.
192
+ * ADR-047 §2.12. Mirrors the audit service's OpenAPI `ForwarderType`
193
+ * enum so callers get autocomplete and the compiler rejects typos at
194
+ * build time. The available types are real-time HTTP destinations
195
+ * sharing one outbound plumbing path. Object-storage archival (S3, GCS,
196
+ * etc.) has different operational shape (batching, IAM, lifecycle
197
+ * policies) and will get its own type if customer demand warrants.
198
+ */
199
+ declare enum ForwarderType {
200
+ DATADOG = "DATADOG",
201
+ ELASTIC = "ELASTIC",
202
+ HONEYCOMB = "HONEYCOMB",
203
+ HTTP = "HTTP",
204
+ NEW_RELIC = "NEW_RELIC",
205
+ SPLUNK_HEC = "SPLUNK_HEC",
206
+ SUMO_LOGIC = "SUMO_LOGIC"
207
+ }
208
+ /**
209
+ * HTTP verb used by a forwarder's outbound delivery.
210
+ *
211
+ * Mirrors the audit service's OpenAPI `HttpConfigurationMethod` enum so
212
+ * callers get autocomplete and a typed value back from
213
+ * `forwarder.configuration.method`.
214
+ */
215
+ declare enum HttpMethod {
216
+ DELETE = "DELETE",
217
+ GET = "GET",
218
+ PATCH = "PATCH",
219
+ POST = "POST",
220
+ PUT = "PUT"
221
+ }
222
+ /**
223
+ * Engine used to evaluate {@link Forwarder.transform}. Must be set
224
+ * whenever `transform` is set. Today only `JSONATA` is supported.
225
+ */
226
+ declare enum TransformType {
227
+ JSONATA = "JSONATA"
228
+ }
229
+ /**
230
+ * Forwarder destination HTTP request shape.
231
+ *
232
+ * Today every destination type uses HTTP; future transports (FTP, SQS,
233
+ * ...) will join this as members of a discriminated union under
234
+ * {@link Forwarder.configuration}.
107
235
  */
108
- type ForwarderType = "HTTP" | "DATADOG" | "SPLUNK_HEC" | "SUMO_LOGIC" | "NEW_RELIC" | "HONEYCOMB" | "ELASTIC";
109
- interface ForwarderHttp {
110
- method: string;
236
+ declare class HttpConfiguration {
237
+ /** HTTP verb used for delivery. Defaults to {@link HttpMethod.POST}. */
238
+ method: HttpMethod;
239
+ /** Destination URL the audit service POSTs each event to. */
111
240
  url: string;
241
+ /**
242
+ * Headers attached to every outbound request. Values carry credentials
243
+ * and are encrypted at rest server-side; reads return them redacted.
244
+ */
112
245
  headers: HttpHeader[];
113
- body: string | null;
114
246
  /**
115
- * 3-character string: an exact HTTP code (e.g. `"200"`, `"204"`) or a
116
- * class (`"2xx"`, `"3xx"`, `"4xx"`, `"5xx"`).
247
+ * Status the destination must return for delivery to count as success
248
+ * either an exact code (`"200"`, `"204"`) or a status class
249
+ * (`"2xx"`, `"4xx"`). Defaults to `"2xx"`.
117
250
  */
118
251
  successStatus: string;
252
+ constructor(fields?: {
253
+ method?: HttpMethod;
254
+ url?: string;
255
+ headers?: HttpHeader[];
256
+ successStatus?: string;
257
+ });
119
258
  }
120
- interface Forwarder {
121
- id: string;
259
+ /**
260
+ * A SIEM streaming forwarder configured on the customer's account.
261
+ *
262
+ * Active-record style: mutate fields directly and call {@link save} to
263
+ * persist, or {@link delete} to remove. Header values in
264
+ * `configuration.headers` are always returned redacted on reads — the
265
+ * GET path on the audit API replaces every header value with
266
+ * `"<redacted>"`. Re-supply the real values before calling {@link save}
267
+ * (the SDK does not cache them client-side).
268
+ */
269
+ declare class Forwarder {
270
+ /**
271
+ * Server-assigned UUID for this forwarder. `null` until {@link save}
272
+ * has run for the first time.
273
+ */
274
+ id: string | null;
275
+ /** Display name. Free-form. */
122
276
  name: string;
123
- slug: string;
277
+ /** Destination type — see {@link ForwarderType}. */
124
278
  forwarderType: ForwarderType;
279
+ /** Destination request configuration. */
280
+ configuration: HttpConfiguration;
281
+ /**
282
+ * When `false`, the audit service skips delivery for this forwarder
283
+ * but still records `filtered_out` deliveries.
284
+ */
125
285
  enabled: boolean;
286
+ /** Optional free-text description. */
287
+ description: string | null;
288
+ /**
289
+ * Optional JSON Logic expression evaluated per event. When set, events
290
+ * that don't match are recorded as `filtered_out` deliveries instead
291
+ * of being POSTed to the destination.
292
+ */
126
293
  filter: Record<string, unknown> | null;
294
+ /**
295
+ * Optional template applied to each event before delivery. Shape
296
+ * depends on {@link transformType}; for `"JSONATA"`, a JSONata
297
+ * expression string. `null` delivers the event JSON as-is.
298
+ */
127
299
  transform: string | null;
128
- /** Header values are returned redacted on reads. */
129
- http: ForwarderHttp;
300
+ /**
301
+ * Engine used to evaluate {@link transform}. Currently only
302
+ * `"JSONATA"` is supported. Auto-filled by the SDK whenever
303
+ * {@link transform} is set on save.
304
+ */
305
+ transformType: TransformType | null;
306
+ /**
307
+ * When the audit service first persisted this forwarder. `null` for
308
+ * an unsaved instance.
309
+ */
130
310
  createdAt: string | null;
311
+ /** When this forwarder was last mutated. */
131
312
  updatedAt: string | null;
313
+ /** Soft-delete timestamp. `null` for live forwarders. */
132
314
  deletedAt: string | null;
315
+ /** Monotonic version counter; bumped on every server-side write. */
133
316
  version: number | null;
317
+ /** @internal */
318
+ _client: ForwarderModelClient | null;
319
+ constructor(client: ForwarderModelClient | null, fields: {
320
+ id?: string | null;
321
+ name: string;
322
+ forwarderType: ForwarderType;
323
+ configuration: HttpConfiguration;
324
+ enabled?: boolean;
325
+ description?: string | null;
326
+ filter?: Record<string, unknown> | null;
327
+ transform?: string | null;
328
+ transformType?: TransformType | null;
329
+ createdAt?: string | null;
330
+ updatedAt?: string | null;
331
+ deletedAt?: string | null;
332
+ version?: number | null;
333
+ });
334
+ /**
335
+ * Create or update this forwarder on the server.
336
+ *
337
+ * Upsert behavior is driven by {@link createdAt}: a forwarder with
338
+ * no `createdAt` is created (POST); otherwise it's full-replace
339
+ * updated (PUT). After the call, every field is refreshed from the
340
+ * server response (including newly-assigned `id`, `createdAt`,
341
+ * `updatedAt`, `version`).
342
+ */
343
+ save(): Promise<void>;
344
+ /** Soft-delete this forwarder on the server. */
345
+ delete(): Promise<void>;
346
+ /** @internal Copy every server-authoritative field from `other` onto self. */
347
+ _apply(other: Forwarder): void;
134
348
  }
135
- interface CreateForwarderInput {
136
- name: string;
137
- forwarderType: ForwarderType;
138
- http: ForwarderHttp;
139
- enabled?: boolean;
140
- filter?: Record<string, unknown>;
141
- transform?: string;
142
- }
143
- interface UpdateForwarderInput extends CreateForwarderInput {
349
+ /**
350
+ * @internal Minimal interface that `Forwarder.save()` / `.delete()`
351
+ * call back into. Implemented by `ForwardersClient` in
352
+ * `src/management/audit.ts`.
353
+ */
354
+ interface ForwarderModelClient {
355
+ _createForwarder(forwarder: Forwarder): Promise<Forwarder>;
356
+ _updateForwarder(forwarder: Forwarder): Promise<Forwarder>;
357
+ _deleteForwarder(id: string): Promise<void>;
144
358
  }
359
+ /**
360
+ * Parameters accepted by `mgmt.audit.forwarders.list(...)`.
361
+ */
145
362
  interface ListForwardersParams {
363
+ /** Filter to a single forwarder type. */
146
364
  forwarderType?: ForwarderType;
365
+ /** Filter to forwarders matching this enabled state. */
147
366
  enabled?: boolean;
148
367
  /** 1-based page number to return. Defaults to 1. */
149
368
  pageNumber?: number;
@@ -152,8 +371,13 @@ interface ListForwardersParams {
152
371
  /** Include `total` and `totalPages` in {@link Pagination}. Defaults to false. */
153
372
  metaTotal?: boolean;
154
373
  }
374
+ /**
375
+ * Page of forwarders returned by `mgmt.audit.forwarders.list(...)`.
376
+ */
155
377
  interface ListForwardersPage {
378
+ /** Forwarders on this page, in server-defined order. */
156
379
  forwarders: Forwarder[];
380
+ /** Pagination metadata (`page`, `size`, optional `total`/`totalPages`). */
157
381
  pagination: Pagination;
158
382
  }
159
383
  /**
@@ -1670,16 +1894,17 @@ interface components {
1670
1894
  /**
1671
1895
  * Shared types for the management namespace.
1672
1896
  */
1673
- /** Whether an environment participates in the canonical ordering.
1897
+ /**
1898
+ * Whether an environment participates in the canonical ordering.
1674
1899
  *
1675
- * STANDARD environments are the customer's deploy targets (production,
1676
- * staging, development, etc.) and appear in the environment_order list.
1677
- * AD_HOC environments are transient targets (preview branches,
1900
+ * `AD_HOC` environments are transient targets (preview branches,
1678
1901
  * developer sandboxes) that are excluded from the standard ordering.
1902
+ * `STANDARD` environments are the customer's deploy targets (production,
1903
+ * staging, development, etc.) and appear in the environment_order list.
1679
1904
  */
1680
1905
  declare enum EnvironmentClassification {
1681
- STANDARD = "STANDARD",
1682
- AD_HOC = "AD_HOC"
1906
+ AD_HOC = "AD_HOC",
1907
+ STANDARD = "STANDARD"
1683
1908
  }
1684
1909
  /**
1685
1910
  * A color, expressed as a CSS hex string.
@@ -1839,14 +2064,14 @@ declare class AccountSettings {
1839
2064
  * can validate calls. Raw strings are still accepted for flexibility.
1840
2065
  */
1841
2066
  declare enum Op {
2067
+ CONTAINS = "contains",
1842
2068
  EQ = "==",
1843
- NEQ = "!=",
1844
- LT = "<",
1845
- LTE = "<=",
1846
2069
  GT = ">",
1847
2070
  GTE = ">=",
1848
2071
  IN = "in",
1849
- CONTAINS = "contains"
2072
+ LT = "<",
2073
+ LTE = "<=",
2074
+ NEQ = "!="
1850
2075
  }
1851
2076
  /** @internal */
1852
2077
  interface ContextClient {
@@ -1967,10 +2192,10 @@ declare class Rule {
1967
2192
  */
1968
2193
  /** Type of a {@link ConfigItem} value. */
1969
2194
  declare enum ItemType {
1970
- STRING = "STRING",
1971
- NUMBER = "NUMBER",
1972
2195
  BOOLEAN = "BOOLEAN",
1973
- JSON = "JSON"
2196
+ JSON = "JSON",
2197
+ NUMBER = "NUMBER",
2198
+ STRING = "STRING"
1974
2199
  }
1975
2200
  /** @internal Config client surface used by the active-record `Config.save`/`delete`. */
1976
2201
  interface ConfigModelClient {
@@ -2621,15 +2846,21 @@ declare class ManagementFlagsClient {
2621
2846
  /**
2622
2847
  * Public types for the Logging SDK.
2623
2848
  */
2624
- /** Log level values matching the smplkit platform. */
2849
+ /**
2850
+ * Log severity levels used by the Smpl Logging service.
2851
+ *
2852
+ * Members are declared in alphabetical order. Severity ordering is not
2853
+ * derived from declaration order — it lives in the framework adapter
2854
+ * code that maps these to each framework's native numeric level.
2855
+ */
2625
2856
  declare enum LogLevel {
2626
- TRACE = "TRACE",
2627
2857
  DEBUG = "DEBUG",
2628
- INFO = "INFO",
2629
- WARN = "WARN",
2630
2858
  ERROR = "ERROR",
2631
2859
  FATAL = "FATAL",
2632
- SILENT = "SILENT"
2860
+ INFO = "INFO",
2861
+ SILENT = "SILENT",
2862
+ TRACE = "TRACE",
2863
+ WARN = "WARN"
2633
2864
  }
2634
2865
  /**
2635
2866
  * Describes a logger effective-level change. Frozen — fields cannot be
@@ -2926,32 +3157,84 @@ declare class LogGroupsClient {
2926
3157
  /**
2927
3158
  * Smpl Audit management surface — `mgmt.audit.*`.
2928
3159
  *
2929
- * Counterpart to the runtime `AuditClient`. The runtime client owns event
2930
- * recording and read-side queries; this client owns SIEM forwarder CRUD:
3160
+ * Counterpart to the runtime `AuditClient`. The runtime client owns
3161
+ * event recording and read-side queries; this client owns SIEM
3162
+ * forwarder CRUD via the active-record {@link Forwarder} model:
2931
3163
  *
2932
- * mgmt.audit.forwarders.{create,get,list,update,delete}
3164
+ * mgmt.audit.forwarders.{new,get,list,delete}
3165
+ * Forwarder.{save,delete}
2933
3166
  *
2934
3167
  * New audit-management capabilities should be added here, not in
2935
3168
  * `src/audit/client.ts`.
2936
3169
  */
2937
3170
 
2938
3171
  type AuditHttp = ReturnType<typeof createClient<paths>>;
2939
- /** `mgmt.audit.forwarders.*` — CRUD for SIEM forwarders. */
2940
- declare class ForwardersClient {
3172
+ /**
3173
+ * `mgmt.audit.forwarders.*` — active-record CRUD for SIEM forwarders.
3174
+ */
3175
+ declare class ForwardersClient implements ForwarderModelClient {
2941
3176
  private readonly _http;
2942
3177
  /** @internal */
2943
3178
  constructor(_http: AuditHttp);
2944
- create(input: CreateForwarderInput): Promise<Forwarder>;
2945
- list(params?: ListForwardersParams): Promise<ListForwardersPage>;
2946
- get(forwarderId: string): Promise<Forwarder>;
2947
3179
  /**
2948
- * Full-replace update. PUT semantics every field is overwritten.
3180
+ * Construct an unsaved {@link Forwarder}. Call {@link Forwarder.save}
3181
+ * to persist.
3182
+ *
3183
+ * @param fields.name Display name. Free-form.
3184
+ * @param fields.forwarderType Destination type — see {@link ForwarderType}.
3185
+ * @param fields.configuration Destination HTTP request configuration.
3186
+ * Headers carry credentials and are
3187
+ * encrypted at rest server-side; reads
3188
+ * return them redacted.
3189
+ * @param fields.enabled Whether the forwarder is active. Defaults true.
3190
+ * @param fields.description Optional free-text description.
3191
+ * @param fields.filter Optional JSON Logic filter; events that
3192
+ * don't match are recorded as
3193
+ * `filtered_out` deliveries.
3194
+ * @param fields.transform Optional JSONata template applied to
3195
+ * the event payload before POST. `null`
3196
+ * delivers the event as-is.
3197
+ */
3198
+ new(fields: {
3199
+ name: string;
3200
+ forwarderType: ForwarderType;
3201
+ configuration: HttpConfiguration;
3202
+ enabled?: boolean;
3203
+ description?: string | null;
3204
+ filter?: Record<string, unknown> | null;
3205
+ transform?: string | null;
3206
+ }): Forwarder;
3207
+ /**
3208
+ * List forwarders for the authenticated account.
2949
3209
  *
2950
- * Header values must be re-supplied as plaintext; the GET path
2951
- * returns them in plaintext for exactly this round-trip.
3210
+ * Offset paginated per ADR-014: pass {@link ListForwardersParams.pageNumber}
3211
+ * (1-based) and {@link ListForwardersParams.pageSize} (default 1000,
3212
+ * max 1000). Pass `metaTotal=true` to populate `total` and `totalPages`
3213
+ * in the returned `pagination` (costs an extra `COUNT` query
3214
+ * server-side).
2952
3215
  */
2953
- update(forwarderId: string, input: UpdateForwarderInput): Promise<Forwarder>;
3216
+ list(params?: ListForwardersParams): Promise<ListForwardersPage>;
3217
+ /**
3218
+ * Fetch a single forwarder by id. The returned instance is bound to
3219
+ * this client so {@link Forwarder.save} and {@link Forwarder.delete}
3220
+ * round-trip back here.
3221
+ */
3222
+ get(forwarderId: string): Promise<Forwarder>;
3223
+ /** Soft-delete a forwarder by id. */
2954
3224
  delete(forwarderId: string): Promise<void>;
3225
+ /**
3226
+ * @internal Called by `Forwarder.save()` on unsaved instances.
3227
+ */
3228
+ _createForwarder(forwarder: Forwarder): Promise<Forwarder>;
3229
+ /**
3230
+ * @internal Full-replace PUT. Called by `Forwarder.save()` on
3231
+ * instances that already have a `createdAt`. Header values must be
3232
+ * re-supplied as plaintext; the GET path redacts them, so a PUT body
3233
+ * containing `"<redacted>"` would persist that literal.
3234
+ */
3235
+ _updateForwarder(forwarder: Forwarder): Promise<Forwarder>;
3236
+ /** @internal Called by `Forwarder.delete()`. */
3237
+ _deleteForwarder(id: string): Promise<void>;
2955
3238
  }
2956
3239
  /** `mgmt.audit.*` — management surface for the audit service. */
2957
3240
  declare class ManagementAuditClient {