@ionite/core 0.0.24-beta.20260928.18 → 0.0.24-beta.20260930.19
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 +961 -869
- package/dist/index.js +2 -2
- package/dist/server.d.ts +947 -824
- package/dist/server.js +1 -1
- package/dist/shared/core-4qx8trmz.js +4 -0
- package/package.json +1 -1
- package/dist/shared/core-25ebdwhd.js +0 -4
package/dist/index.d.ts
CHANGED
|
@@ -16,212 +16,6 @@ declare const KNOWN_WORKLOAD_KEYS: readonly ["id", "clientId", "displayName", "d
|
|
|
16
16
|
declare function customAttributes(value: object, knownKeys: readonly PropertyKey[]): Record<string, unknown> | undefined;
|
|
17
17
|
import { StandardSchemaV1 as StandardSchemaV19 } from "@standard-schema/spec";
|
|
18
18
|
import { StandardSchemaV1 as StandardSchemaV18 } from "@standard-schema/spec";
|
|
19
|
-
/**
|
|
20
|
-
* Third-party CIAM provider presets and claim mapping.
|
|
21
|
-
*
|
|
22
|
-
* Defines the built-in provider adapters used by the CIAM module for customer
|
|
23
|
-
* login. Each preset supplies default OIDC/OAuth2 endpoints, scope, branding,
|
|
24
|
-
* and a claim mapper that normalizes provider claims into a candidate customer.
|
|
25
|
-
* The application's `CustomerStore` remains the system of record: the SDK only
|
|
26
|
-
* extracts standard claims and hands a candidate to `lookup`/`upsert`.
|
|
27
|
-
*/
|
|
28
|
-
/** Built-in provider types. `oidc` is a generic OIDC provider; `magic-link` is the passwordless flow. */
|
|
29
|
-
type CIAMProviderType = "oidc" | "google" | "github" | "microsoft" | "apple" | "magic-link";
|
|
30
|
-
/** Branding colors for rendering a provider button in light and dark themes. */
|
|
31
|
-
type CIAMProviderColors = {
|
|
32
|
-
/** Background/brand color for light theme (hex or CSS color). */
|
|
33
|
-
light: string;
|
|
34
|
-
/** Background/brand color for dark theme (hex or CSS color). */
|
|
35
|
-
dark: string;
|
|
36
|
-
/** Optional secondary/accent color. */
|
|
37
|
-
secondary?: string;
|
|
38
|
-
};
|
|
39
|
-
/** Operator-supplied branding so the UI can render a provider list without hardcoding. */
|
|
40
|
-
type CIAMProviderBranding = {
|
|
41
|
-
/** Human-readable name shown on the login button (e.g. "Google"). */
|
|
42
|
-
displayName: string;
|
|
43
|
-
/** External icon URL (typically an SVG/PNG hosted on a CDN). */
|
|
44
|
-
iconUrl?: string;
|
|
45
|
-
/** Light/dark brand colors. */
|
|
46
|
-
colors?: CIAMProviderColors;
|
|
47
|
-
/** Optional provider info/marketing URL. */
|
|
48
|
-
url?: string;
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* A single CIAM provider declaration. OIDC/OAuth2 endpoint and credential
|
|
52
|
-
* fields come from the ConfigSource (never application code).
|
|
53
|
-
*/
|
|
54
|
-
type CIAMProviderConfig = {
|
|
55
|
-
/** Provider adapter type. Selects defaults and claim mapping. */
|
|
56
|
-
type: CIAMProviderType;
|
|
57
|
-
/** Whether this provider is enabled. Defaults to true when omitted. */
|
|
58
|
-
enabled?: boolean;
|
|
59
|
-
/** Recommended display order (ascending). Ties broken by declaration order. */
|
|
60
|
-
order?: number;
|
|
61
|
-
/** UI branding metadata. */
|
|
62
|
-
branding?: CIAMProviderBranding;
|
|
63
|
-
/** OIDC issuer/authority (used for discovery when explicit endpoints are omitted). */
|
|
64
|
-
authority?: string;
|
|
65
|
-
/** Authorization endpoint (overrides preset). */
|
|
66
|
-
authorizationUrl?: string;
|
|
67
|
-
/** Token endpoint (overrides preset). */
|
|
68
|
-
tokenUrl?: string;
|
|
69
|
-
/** JWKS endpoint for ID token verification (overrides preset). */
|
|
70
|
-
jwksUri?: string;
|
|
71
|
-
/** OAuth2 UserInfo endpoint for providers without an ID token (e.g. GitHub). */
|
|
72
|
-
userInfoUrl?: string;
|
|
73
|
-
/** OAuth2 client id (ConfigSource-only). */
|
|
74
|
-
clientId?: string;
|
|
75
|
-
/** OAuth2 client secret (ConfigSource-only). */
|
|
76
|
-
clientSecret?: string;
|
|
77
|
-
/** Requested scope (overrides preset). */
|
|
78
|
-
scope?: string;
|
|
79
|
-
/** Apple: team id for client-secret generation. */
|
|
80
|
-
teamId?: string;
|
|
81
|
-
/** Apple: key id for client-secret generation. */
|
|
82
|
-
keyId?: string;
|
|
83
|
-
/** Apple: PKCS#8 PEM private key for client-secret generation. */
|
|
84
|
-
privateKey?: string;
|
|
85
|
-
};
|
|
86
|
-
/** Sanitized provider entry returned by the discovery endpoint for the UI. */
|
|
87
|
-
type CIAMProviderDescriptor = {
|
|
88
|
-
/** Provider key (matches the RemoteConfig map key); used as `?provider=`. */
|
|
89
|
-
name: string;
|
|
90
|
-
type: CIAMProviderType;
|
|
91
|
-
displayName: string;
|
|
92
|
-
/** SDK-derived login URL to navigate to (begins the flow). */
|
|
93
|
-
loginUrl: string;
|
|
94
|
-
iconUrl?: string;
|
|
95
|
-
colors?: CIAMProviderColors;
|
|
96
|
-
url?: string;
|
|
97
|
-
};
|
|
98
|
-
/**
|
|
99
|
-
* Light display cookies (`${cookiesPrefix}.profile`).
|
|
100
|
-
*
|
|
101
|
-
* The envelope is SDK-owned. App code supplies only `user`. The cookie is not an
|
|
102
|
-
* authentication input: the server never reads it to resolve a session, and the browser
|
|
103
|
-
* may forge it. `expiresAt` is display metadata so a client can order entries without a
|
|
104
|
-
* round trip; authoritative expiry is the peer `${cookiesPrefix}.session` record.
|
|
105
|
-
*/
|
|
106
|
-
declare const DISPLAY_COOKIE_SUFFIX = ".profile";
|
|
107
|
-
declare const DISPLAY_COOKIE_VERSION = 1;
|
|
108
|
-
declare const DEFAULT_DISPLAY_COOKIE_MAX = 10;
|
|
109
|
-
declare const DEFAULT_DISCOVERED_COOKIE_MAX = 10;
|
|
110
|
-
declare const DEFAULT_DISCOVERED_COOKIE_TTL_SECONDS: number;
|
|
111
|
-
declare const DISCOVERED_COOKIE_PREFIX = "ion.discovered";
|
|
112
|
-
type DisplayCookieConfig = {
|
|
113
|
-
/**
|
|
114
|
-
* When true, the SDK writes a non-HttpOnly display cookie beside the opaque session cookie.
|
|
115
|
-
* ConfigSource-only. Default false.
|
|
116
|
-
*/
|
|
117
|
-
enabled?: boolean;
|
|
118
|
-
/**
|
|
119
|
-
* How many display cookies a single response may leave on the browser, newest session window
|
|
120
|
-
* first. ConfigSource-only. Values below 1 fall back to {@link DEFAULT_DISPLAY_COOKIE_MAX}.
|
|
121
|
-
* @default 10
|
|
122
|
-
*/
|
|
123
|
-
max?: number;
|
|
124
|
-
/**
|
|
125
|
-
* Session-less tenant hints written by an App after an explicit directory lookup.
|
|
126
|
-
* ConfigSource-only and off unless `enabled` is true.
|
|
127
|
-
*/
|
|
128
|
-
discovered?: DiscoveredDisplayCookieConfig;
|
|
129
|
-
};
|
|
130
|
-
type DiscoveredDisplayCookieConfig = {
|
|
131
|
-
enabled?: boolean;
|
|
132
|
-
/** Browser hint lifetime. This is not a session expiry. @default 14400 */
|
|
133
|
-
ttlSeconds?: number;
|
|
134
|
-
/** Independent cap; discovered hints never displace live-session entries. @default 10 */
|
|
135
|
-
max?: number;
|
|
136
|
-
};
|
|
137
|
-
/** What `${basePath}/auth/user` and `${basePath}/auth/customer` return. ConfigSource-only. */
|
|
138
|
-
type UserEndpointPolicy = "full" | "display" | "off";
|
|
139
|
-
type DisplayUser = Record<string, string | number | boolean | null>;
|
|
140
|
-
type DisplayAuthType = "sso" | "ciam";
|
|
141
|
-
type DisplayCookieEnvelope = {
|
|
142
|
-
v: typeof DISPLAY_COOKIE_VERSION;
|
|
143
|
-
/**
|
|
144
|
-
* Session envelopes omit this field (absent means `'session'`) so the wire format stays identical
|
|
145
|
-
* to cookies written before discovered hints existed; only discovered hints set it explicitly.
|
|
146
|
-
* Readers must treat `undefined` as `'session'`.
|
|
147
|
-
*/
|
|
148
|
-
kind?: "session" | "discovered";
|
|
149
|
-
tenantId?: string;
|
|
150
|
-
authType: DisplayAuthType;
|
|
151
|
-
/** ISO timestamp copied from the session window at write time. Display only. */
|
|
152
|
-
expiresAt: string;
|
|
153
|
-
user: DisplayUser;
|
|
154
|
-
tenantName?: string;
|
|
155
|
-
};
|
|
156
|
-
type DisplayIdentity = {
|
|
157
|
-
name?: string;
|
|
158
|
-
email?: string;
|
|
159
|
-
avatar?: string;
|
|
160
|
-
};
|
|
161
|
-
declare function resolveDisplayCookieMax(max: number | undefined): number;
|
|
162
|
-
declare function resolveDiscoveredCookieMax(max: number | undefined): number;
|
|
163
|
-
declare function resolveDiscoveredCookieTtlSeconds(ttlSeconds: number | undefined): number;
|
|
164
|
-
declare function defaultDisplayUser(identity: DisplayIdentity): DisplayUser;
|
|
165
|
-
/** Drop non-primitives and auth-bearing keys. Display cookies carry UI fields only. */
|
|
166
|
-
declare function sanitizeDisplayUser(value: unknown): DisplayUser;
|
|
167
|
-
/**
|
|
168
|
-
* AppDev projection runs on the full user (including custom attributes). When omitted, or when it
|
|
169
|
-
* throws, the cookie carries name, email, and avatar only. Forbidden and non-primitive fields are
|
|
170
|
-
* dropped either way — a projector cannot put a session id or token into the cookie.
|
|
171
|
-
*/
|
|
172
|
-
declare function projectDisplayUser<TUser extends object>(user: TUser, projector?: (user: TUser) => unknown): DisplayUser;
|
|
173
|
-
declare function encodeDisplayCookie(envelope: DisplayCookieEnvelope): string;
|
|
174
|
-
declare function decodeDisplayCookie(raw: string): DisplayCookieEnvelope | undefined;
|
|
175
|
-
type ParsedDisplayCookie = {
|
|
176
|
-
name: string;
|
|
177
|
-
prefix: string;
|
|
178
|
-
envelope: DisplayCookieEnvelope;
|
|
179
|
-
};
|
|
180
|
-
declare function readDisplayCookies(cookieHeader: string | null | undefined): ParsedDisplayCookie[];
|
|
181
|
-
/** Client ordering: newest session window first. Invalid timestamps sort last. */
|
|
182
|
-
declare function compareDisplayExpiryDesc(a: string | undefined, b: string | undefined): number;
|
|
183
|
-
declare function profileCookieName(cookiesPrefix: string): string;
|
|
184
|
-
declare function discoveredProfileCookieName(tenantId: string): string;
|
|
185
|
-
/**
|
|
186
|
-
* Minimal logger interface compatible with common structured logging patterns.
|
|
187
|
-
*/
|
|
188
|
-
interface Logger {
|
|
189
|
-
trace(message?: unknown, ...optionalParams: unknown[]): void;
|
|
190
|
-
debug(message?: unknown, ...optionalParams: unknown[]): void;
|
|
191
|
-
info(message?: unknown, ...optionalParams: unknown[]): void;
|
|
192
|
-
warn(message?: unknown, ...optionalParams: unknown[]): void;
|
|
193
|
-
error(message?: unknown, ...optionalParams: unknown[]): void;
|
|
194
|
-
}
|
|
195
|
-
/**
|
|
196
|
-
* Renders a structured logger call as one greppable line while leaving the source fields separate
|
|
197
|
-
* for telemetry exporters.
|
|
198
|
-
*/
|
|
199
|
-
declare function formatLogLine(level: keyof Logger, message: unknown, optionalParams?: unknown[], timestamp?: Date): string;
|
|
200
|
-
/**
|
|
201
|
-
* No-op implementation — does nothing for any log level
|
|
202
|
-
*/
|
|
203
|
-
declare const silentLogger: Logger;
|
|
204
|
-
/**
|
|
205
|
-
* Default logger used until an ionite instance is configured with
|
|
206
|
-
* an OpenTelemetry-backed logger or an application-provided logger.
|
|
207
|
-
*/
|
|
208
|
-
declare const defaultLogger: Logger;
|
|
209
|
-
/**
|
|
210
|
-
* Logger that logs messages debug, info, warn, and error to the console.
|
|
211
|
-
*/
|
|
212
|
-
declare const debugLogger: Logger;
|
|
213
|
-
/**
|
|
214
|
-
* Logger that logs messages info, warn, and error to the console.
|
|
215
|
-
*/
|
|
216
|
-
declare const infoLogger: Logger;
|
|
217
|
-
/**
|
|
218
|
-
* Logger that logs messages warn and error to the console.
|
|
219
|
-
*/
|
|
220
|
-
declare const warnLogger: Logger;
|
|
221
|
-
/**
|
|
222
|
-
* Human-readable single-line console logger for local application output.
|
|
223
|
-
*/
|
|
224
|
-
declare const prettyLogger: Logger;
|
|
225
19
|
/** Synchronous, in-memory read surface for one code catalog entity kind. */
|
|
226
20
|
type CodeCatalogNamespace<TEntity> = {
|
|
227
21
|
get(id: string): TEntity | undefined;
|
|
@@ -300,7 +94,6 @@ declare function deprecateRetiredCodeCatalogRows(code: CodeCatalog | undefined,
|
|
|
300
94
|
* visible. Returns undefined when neither source is wired.
|
|
301
95
|
*/
|
|
302
96
|
declare function unionCatalogRead(code: CodeCatalog | undefined, store: AccessCatalogStore | undefined): AccessCatalogStore | undefined;
|
|
303
|
-
import { StandardSchemaV1 as StandardSchemaV15 } from "@standard-schema/spec";
|
|
304
97
|
/**
|
|
305
98
|
* Resolve an access subject/target/resource reference (a string id or an object carrying one) to its
|
|
306
99
|
* canonical, trimmed string id. This is the single id-resolution rule shared across the authz stack
|
|
@@ -315,495 +108,106 @@ declare function accessRefId(value: unknown): string;
|
|
|
315
108
|
* default, or `applyToApplication`) collapses to the `app` scope key.
|
|
316
109
|
*/
|
|
317
110
|
declare function accessRootId(change: AccessChange): string;
|
|
318
|
-
type ChangeListener = () => void;
|
|
319
|
-
/**
|
|
320
|
-
* Reactive source/adapter contract. Implemented by config-source-backed adapters
|
|
321
|
-
* (for example `SecretsSource`) to advertise change subscription and source liveness.
|
|
322
|
-
* `isAvailable()` here is an adapter liveness hook and is intentionally distinct from
|
|
323
|
-
* module readiness (`ModuleReadiness.isReady()` / `ready()`).
|
|
324
|
-
*/
|
|
325
|
-
type ReactiveHandle = {
|
|
326
|
-
beforeChange?(listener: ChangeListener): () => void;
|
|
327
|
-
afterChange?(listener: ChangeListener): () => void;
|
|
328
|
-
isAvailable?(): boolean;
|
|
329
|
-
};
|
|
330
111
|
/**
|
|
331
|
-
*
|
|
332
|
-
*
|
|
333
|
-
*
|
|
112
|
+
* ConfigSource-only block that lets an issuing IdP's token claims satisfy `has*` checks.
|
|
113
|
+
* Placed independently on `sso`, each CIAM provider, and each incoming workload IdP.
|
|
114
|
+
* Absent means that issuer's claims never satisfy entitlements.
|
|
334
115
|
*
|
|
335
|
-
*
|
|
336
|
-
*
|
|
337
|
-
* - `ready(timeout?)` resolves once the handle first becomes usable; use it at startup or
|
|
338
|
-
* as a feature gate. With no timeout it waits indefinitely; with `timeout > 0` it rejects
|
|
339
|
-
* after that many milliseconds.
|
|
116
|
+
* Derived rows are session-scoped for users and customers (expanded onto the session at login
|
|
117
|
+
* and refresh) and per-request for workloads. They are never written to the access stores.
|
|
340
118
|
*/
|
|
341
|
-
type
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
119
|
+
type ClaimsAsEntitlements = {
|
|
120
|
+
/**
|
|
121
|
+
* Claim names to read. A dotted path addresses a nested claim (`realm_access.roles`).
|
|
122
|
+
* `scope` is space-delimited; every other string claim is one value; arrays contribute each string.
|
|
123
|
+
* Required and non-empty.
|
|
124
|
+
*/
|
|
125
|
+
claims: string[];
|
|
126
|
+
/**
|
|
127
|
+
* Expand a matched catalog role or group into the permissions it confers.
|
|
128
|
+
* Default false: a claim value matches only the catalog id it names.
|
|
129
|
+
*/
|
|
130
|
+
expand?: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Let catalog-bound resources on expanded rows satisfy resource-scoped checks.
|
|
133
|
+
* Default false. Ignored unless `expand` is true: a claim string cannot name a resource.
|
|
134
|
+
*/
|
|
135
|
+
resources?: boolean;
|
|
136
|
+
};
|
|
137
|
+
/** One effective entitlement derived from a token claim. Not a stored grant. */
|
|
138
|
+
type DerivedEntitlement = {
|
|
139
|
+
targetType: OaaAccessTargetType;
|
|
140
|
+
target: string;
|
|
141
|
+
/** Set only when the plane opted into `resources` and the catalog row binds this resource. */
|
|
142
|
+
resource?: string;
|
|
143
|
+
/** Claim name the value was read from. */
|
|
144
|
+
claim: string;
|
|
145
|
+
/** Expansion root id when the row came from catalog expansion. Absent for a direct id match. */
|
|
146
|
+
root?: string;
|
|
147
|
+
};
|
|
148
|
+
/** Secret-free projection of a configured claims block, including whether the App can persist it. */
|
|
149
|
+
type ClaimsAsEntitlementsDescription = {
|
|
150
|
+
claims: string[];
|
|
151
|
+
expand: boolean;
|
|
152
|
+
resources: boolean;
|
|
153
|
+
/**
|
|
154
|
+
* User and customer planes: the session store declares it persists `Session.entitlements`.
|
|
155
|
+
* Workload plane: always true (nothing is stored).
|
|
156
|
+
*/
|
|
157
|
+
capable: boolean;
|
|
346
158
|
};
|
|
347
159
|
/**
|
|
348
|
-
*
|
|
349
|
-
* `
|
|
350
|
-
*
|
|
160
|
+
* Shared minimal identity fields used to build both the workforce user
|
|
161
|
+
* record (`BaseUser`) and the CIAM customer record (`BaseCustomer`), as well
|
|
162
|
+
* as the authenticated session types (`WorkforceUser`, `Customer`).
|
|
351
163
|
*
|
|
352
|
-
*
|
|
353
|
-
*
|
|
354
|
-
*
|
|
355
|
-
* `requireReady(['iam'])` false and take the app out of rotation for a signal that is designed not to
|
|
356
|
-
* block. Apps that DO treat delta as a hard dependency can gate on `ion.iam.delta.isReady()` /
|
|
357
|
-
* `ion.iam.delta.ready()` explicitly instead.
|
|
164
|
+
* This is an internal structural base and is intentionally not part of the
|
|
165
|
+
* public API surface; consumers extend the `BaseUser` Zod/Valibot schema
|
|
166
|
+
* instead.
|
|
358
167
|
*/
|
|
359
|
-
|
|
360
|
-
/** Per-module readiness snapshot in {@link ReadinessReport}. */
|
|
361
|
-
type ModuleReadinessState = {
|
|
362
|
-
/** Whether the module is active (present/requested) in the effective config. Inactive modules never block readiness. */
|
|
363
|
-
active: boolean;
|
|
364
|
-
/** Synchronous readiness of the module right now (mirrors the module's own `isReady()`). */
|
|
365
|
-
ready: boolean;
|
|
366
|
-
/** Human-readable explanation when the module is `active` but not `ready`. */
|
|
367
|
-
reason?: string;
|
|
368
|
-
};
|
|
369
|
-
/**
|
|
370
|
-
* Holistic, read-only readiness snapshot for an ionite instance. Returned by
|
|
371
|
-
* `ion.readiness()` and used by the built-in `${basePath}/readyz` endpoint. This is composition
|
|
372
|
-
* DATA, not a request gate: applications combine it (via `ion.requireReady([...])`) with their own
|
|
373
|
-
* non-ionite dependency checks to build their health endpoints.
|
|
374
|
-
*/
|
|
375
|
-
type ReadinessReport = {
|
|
376
|
-
/** True when config has been applied (`applied`) and every ACTIVE module is ready. */
|
|
377
|
-
ok: boolean;
|
|
378
|
-
/** Whether RemoteConfig has been applied at least once (mirrors `ion.isReady()`). */
|
|
379
|
-
applied: boolean;
|
|
380
|
-
/** Per-module readiness keyed by {@link ModuleName}. */
|
|
381
|
-
modules: Record<ModuleName, ModuleReadinessState>;
|
|
382
|
-
/** Most recent config-application outcome (last applied time and last error, if any). */
|
|
383
|
-
config: ConfigApplyStatus;
|
|
384
|
-
};
|
|
385
|
-
/** Result of `ion.requireReady(names)`: a synchronous, declarative readiness gate over selected modules. */
|
|
386
|
-
type RequireReadyResult = {
|
|
387
|
-
/** True when config is applied and every requested module is ready. */
|
|
388
|
-
ok: boolean;
|
|
389
|
-
/** The requested modules that are not ready, with reasons when available. */
|
|
390
|
-
notReady: Array<{
|
|
391
|
-
name: ModuleName;
|
|
392
|
-
reason?: string;
|
|
393
|
-
}>;
|
|
394
|
-
};
|
|
395
|
-
type CapabilityKey = "sso.login" | "sso.jit" | "sso.logout" | "sso.back_channel_logout" | "ciam.magic_link" | "ciam.oidc_login" | "ciam.customer" | "ciam.logout" | "iam.users" | "iam.groups" | "iam.workloads" | "iam.customers" | "workload.incoming" | "workload.outgoing" | "authz.oaa" | "tm.integration";
|
|
396
|
-
type CapabilityEndpointUrls = {
|
|
397
|
-
readyzUrl: string;
|
|
398
|
-
capabilitiezUrl: string;
|
|
399
|
-
sso: {
|
|
400
|
-
loginUrl: string;
|
|
401
|
-
userUrl: string;
|
|
402
|
-
logoutUrl: string;
|
|
403
|
-
logoutBackChannelUrl: string;
|
|
404
|
-
refreshUrl: string;
|
|
405
|
-
callbackUrl: string;
|
|
406
|
-
};
|
|
407
|
-
workload: {
|
|
408
|
-
validateUrl: string;
|
|
409
|
-
jwksUrl: string;
|
|
410
|
-
};
|
|
411
|
-
iam: {
|
|
412
|
-
basePath: string;
|
|
413
|
-
usersUrl: string;
|
|
414
|
-
groupsUrl: string;
|
|
415
|
-
workloadsUrl: string;
|
|
416
|
-
customersUrl: string;
|
|
417
|
-
};
|
|
418
|
-
ciam: {
|
|
419
|
-
magicLinkUrl: string;
|
|
420
|
-
magicLinkLoginUrl: string;
|
|
421
|
-
customerUrl: string;
|
|
422
|
-
customerLoginUrl: string;
|
|
423
|
-
customerCallbackUrl: string;
|
|
424
|
-
customerProvidersUrl: string;
|
|
425
|
-
logoutUrl: string;
|
|
426
|
-
};
|
|
427
|
-
};
|
|
428
|
-
type CapabilityState = {
|
|
429
|
-
module: ModuleName;
|
|
430
|
-
active: boolean;
|
|
431
|
-
ready: boolean;
|
|
432
|
-
testable: boolean;
|
|
433
|
-
urls?: string[];
|
|
434
|
-
reason?: string;
|
|
435
|
-
};
|
|
436
|
-
type CapabilitiezManifest = {
|
|
437
|
-
sdk: {
|
|
438
|
-
/** Runtime @ionite/server version serving this manifest. */
|
|
439
|
-
version: string;
|
|
440
|
-
/** Version of the stable capability/test-unit vocabulary. */
|
|
441
|
-
catalogVersion: number;
|
|
442
|
-
};
|
|
443
|
-
basePath: string;
|
|
444
|
-
urls: CapabilityEndpointUrls;
|
|
445
|
-
modules: Record<ModuleName, ModuleReadinessState>;
|
|
446
|
-
capabilities: Record<CapabilityKey, CapabilityState>;
|
|
168
|
+
interface BaseUserFields {
|
|
447
169
|
/**
|
|
448
|
-
*
|
|
449
|
-
* object, Redis URL, and credentials are never exposed.
|
|
170
|
+
* Unique identifier for the user
|
|
450
171
|
*/
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
type
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
tokenUrl: string;
|
|
475
|
-
clientId: string;
|
|
476
|
-
clientSecret: string;
|
|
477
|
-
scope?: string;
|
|
478
|
-
audience?: string;
|
|
479
|
-
headers?: Record<string, string>;
|
|
480
|
-
};
|
|
481
|
-
type OtelLogRecord = {
|
|
482
|
-
severityNumber?: number;
|
|
483
|
-
severityText?: string;
|
|
484
|
-
body?: unknown;
|
|
485
|
-
attributes?: Record<string, unknown>;
|
|
486
|
-
};
|
|
172
|
+
id?: string;
|
|
173
|
+
/**
|
|
174
|
+
* REQUIRED. Unique identifier for login
|
|
175
|
+
*/
|
|
176
|
+
userName: string;
|
|
177
|
+
/**
|
|
178
|
+
* REQUIRED. Simple display name
|
|
179
|
+
*/
|
|
180
|
+
name: string;
|
|
181
|
+
/**
|
|
182
|
+
* REQUIRED. Primary email address
|
|
183
|
+
*/
|
|
184
|
+
email: string;
|
|
185
|
+
/**
|
|
186
|
+
* URL to user's avatar/profile picture
|
|
187
|
+
*/
|
|
188
|
+
avatar?: string;
|
|
189
|
+
/**
|
|
190
|
+
* User type (e.g., "employee", "contractor", "customer").
|
|
191
|
+
* Shared by SSO/CIAM and enterprise/SCIM user representations.
|
|
192
|
+
*/
|
|
193
|
+
userType?: string;
|
|
194
|
+
}
|
|
487
195
|
/**
|
|
488
|
-
*
|
|
489
|
-
*
|
|
196
|
+
* Shared types for paginated list operations across stores.
|
|
197
|
+
*
|
|
198
|
+
* List methods return a ListResult with total, count, items, size, page, and pages.
|
|
199
|
+
* Options accept optional start (0-based), limit (page size), and filter.
|
|
200
|
+
*
|
|
201
|
+
* ORDERING CONTRACT: `list()` does NOT accept a caller-specified sort. Every store MUST return items
|
|
202
|
+
* in a stable, deterministic order (recommended: primary key ascending) so that offset pagination is
|
|
203
|
+
* coherent across pages — page N+1 must continue exactly where page N ended for an unchanged dataset.
|
|
204
|
+
* UI-style arbitrary sorting is the app's concern (sort the returned page, or push ORDER BY into a
|
|
205
|
+
* SQL/search-backed custom store); the SDK only guarantees deterministic paging.
|
|
490
206
|
*/
|
|
491
|
-
type OtelConfig = {
|
|
492
|
-
type?: OtelProviderType;
|
|
493
|
-
name: string;
|
|
494
|
-
endpoint?: string;
|
|
495
|
-
protocol?: OtelProtocol;
|
|
496
|
-
headers?: Record<string, string>;
|
|
497
|
-
apiKey?: string;
|
|
498
|
-
/** Name of a `RemoteConfig.kms` key pool used for exporter authentication. */
|
|
499
|
-
apiKeyPool?: string;
|
|
500
|
-
apiKeyHeader?: string;
|
|
501
|
-
oauth?: OtelOAuthClientCredentialsConfig;
|
|
502
|
-
version?: string;
|
|
503
|
-
deploymentEnvironment?: string;
|
|
504
|
-
resourceAttributes?: OtelAttributes;
|
|
505
|
-
levels?: OtelLevels;
|
|
506
|
-
/** `'off'` exports only to OTel; a level dual-emits at or above that severity. Defaults to `'info'`. */
|
|
507
|
-
console?: OtelConsoleMode;
|
|
508
|
-
traces?: boolean | OtelSignalConfig;
|
|
509
|
-
metrics?: boolean | OtelMetricsSignalConfig;
|
|
510
|
-
logs?: boolean | OtelSignalConfig;
|
|
511
|
-
};
|
|
512
207
|
/**
|
|
513
|
-
*
|
|
514
|
-
*
|
|
515
|
-
|
|
516
|
-
type FrameworkOtelConfig = {
|
|
517
|
-
levels?: OtelLevels;
|
|
518
|
-
instrument?: unknown[];
|
|
519
|
-
/** Optional app-owned destination/renderer for records admitted by `RemoteConfig.otel.console`. */
|
|
520
|
-
console?: (record: OtelLogRecord) => void;
|
|
521
|
-
spanProcessors?: unknown[];
|
|
522
|
-
metricReaders?: unknown[];
|
|
523
|
-
logRecordProcessors?: unknown[];
|
|
524
|
-
sampler?: unknown;
|
|
525
|
-
textMapPropagator?: unknown;
|
|
526
|
-
contextManager?: unknown;
|
|
527
|
-
configure?: (options: Record<string, unknown>) => Record<string, unknown> | void;
|
|
528
|
-
};
|
|
529
|
-
type Otel = {
|
|
530
|
-
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
531
|
-
describe(): OtelDescription;
|
|
532
|
-
beforeChange(listener: ChangeListener): () => void;
|
|
533
|
-
afterChange(listener: ChangeListener): () => void;
|
|
534
|
-
isReady(): boolean;
|
|
535
|
-
ready(timeout?: number): Promise<void>;
|
|
536
|
-
logger: Logger;
|
|
537
|
-
forceFlush(): Promise<void>;
|
|
538
|
-
shutdown(): Promise<void>;
|
|
539
|
-
};
|
|
540
|
-
type ModuleDescriptionBase<TModule extends ModuleName> = {
|
|
541
|
-
module: TModule;
|
|
542
|
-
active: boolean;
|
|
543
|
-
ready: boolean;
|
|
544
|
-
};
|
|
545
|
-
type CookieDescription = {
|
|
546
|
-
prefix?: string;
|
|
547
|
-
path?: string;
|
|
548
|
-
secure?: boolean;
|
|
549
|
-
sameSite?: "Strict" | "Lax";
|
|
550
|
-
domain?: string;
|
|
551
|
-
};
|
|
552
|
-
type SsoDescription = ModuleDescriptionBase<"sso"> & {
|
|
553
|
-
authority?: string;
|
|
554
|
-
tokenUrl?: string;
|
|
555
|
-
authorizationUrl?: string;
|
|
556
|
-
clientId?: string;
|
|
557
|
-
redirectUri?: string;
|
|
558
|
-
responseType?: "code";
|
|
559
|
-
scope?: string;
|
|
560
|
-
silentRedirectUri?: string;
|
|
561
|
-
jwksUri?: string;
|
|
562
|
-
endSessionEndpoint?: string;
|
|
563
|
-
revocationEndpoint?: string;
|
|
564
|
-
cookies: CookieDescription;
|
|
565
|
-
loginStateTtl?: number;
|
|
566
|
-
rotationGraceSeconds?: number;
|
|
567
|
-
sessionWindowSeconds?: number;
|
|
568
|
-
displayCookie?: DisplayCookieConfig;
|
|
569
|
-
jit: {
|
|
570
|
-
enabled: boolean;
|
|
571
|
-
userStore: boolean;
|
|
572
|
-
};
|
|
573
|
-
sessionStore: boolean;
|
|
574
|
-
urls: Partial<CapabilityEndpointUrls["sso"]>;
|
|
575
|
-
};
|
|
576
|
-
type CiamProviderDescription = {
|
|
577
|
-
name: string;
|
|
578
|
-
type: CIAMProviderType;
|
|
579
|
-
enabled: boolean;
|
|
580
|
-
order?: number;
|
|
581
|
-
branding?: CIAMProviderBranding;
|
|
582
|
-
authority?: string;
|
|
583
|
-
authorizationUrl?: string;
|
|
584
|
-
tokenUrl?: string;
|
|
585
|
-
jwksUri?: string;
|
|
586
|
-
userInfoUrl?: string;
|
|
587
|
-
clientId?: string;
|
|
588
|
-
scope?: string;
|
|
589
|
-
loginUrl: string;
|
|
590
|
-
};
|
|
591
|
-
type CiamDescription = ModuleDescriptionBase<"ciam"> & {
|
|
592
|
-
magicLinkTtl?: number;
|
|
593
|
-
loginStateTtl?: number;
|
|
594
|
-
sessionTtl?: number;
|
|
595
|
-
cookies: CookieDescription;
|
|
596
|
-
displayCookie?: DisplayCookieConfig;
|
|
597
|
-
jit: {
|
|
598
|
-
enabled: boolean;
|
|
599
|
-
customerStore: boolean;
|
|
600
|
-
};
|
|
601
|
-
sessionStore: boolean;
|
|
602
|
-
magicLinkStore: boolean;
|
|
603
|
-
providers: CiamProviderDescription[];
|
|
604
|
-
urls: Partial<CapabilityEndpointUrls["ciam"]>;
|
|
605
|
-
};
|
|
606
|
-
type IamPrincipalDescription = {
|
|
607
|
-
enabled: boolean;
|
|
608
|
-
assignment: "app" | "iam" | "iam-request";
|
|
609
|
-
delta?: "patch";
|
|
610
|
-
storeWired: boolean;
|
|
611
|
-
};
|
|
612
|
-
type IamDescription = ModuleDescriptionBase<"iam"> & {
|
|
613
|
-
url?: string;
|
|
614
|
-
deltaAudience?: string;
|
|
615
|
-
users: IamPrincipalDescription;
|
|
616
|
-
workloads: IamPrincipalDescription;
|
|
617
|
-
customers: IamPrincipalDescription;
|
|
618
|
-
groups: {
|
|
619
|
-
enabled: boolean;
|
|
620
|
-
catalogWired: boolean;
|
|
621
|
-
};
|
|
622
|
-
urls: Partial<CapabilityEndpointUrls["iam"]>;
|
|
623
|
-
};
|
|
624
|
-
type WorkloadTrustedIdpDescription = {
|
|
625
|
-
issuer: string;
|
|
626
|
-
jwksUri: string;
|
|
627
|
-
audience: string | string[];
|
|
628
|
-
scopesAsEntitlements?: boolean;
|
|
629
|
-
};
|
|
630
|
-
type WorkloadClientDescription = {
|
|
631
|
-
name: string;
|
|
632
|
-
ready: boolean;
|
|
633
|
-
clientId?: string;
|
|
634
|
-
workloadId?: string;
|
|
635
|
-
idpTokenUrl?: string;
|
|
636
|
-
scope?: string;
|
|
637
|
-
audience?: string;
|
|
638
|
-
authMethod: "client_secret" | "private_key_jwt" | "server_only";
|
|
639
|
-
};
|
|
640
|
-
type WorkloadDescription = ModuleDescriptionBase<"workload"> & {
|
|
641
|
-
incoming: {
|
|
642
|
-
trustedIdps: WorkloadTrustedIdpDescription[];
|
|
643
|
-
};
|
|
644
|
-
outgoing: WorkloadClientDescription[];
|
|
645
|
-
urls: Partial<CapabilityEndpointUrls["workload"]>;
|
|
646
|
-
};
|
|
647
|
-
type SecretsSourceDescription = {
|
|
648
|
-
name: string;
|
|
649
|
-
type: "dev" | "gcp" | "vault" | "aws" | "azure";
|
|
650
|
-
ready: boolean;
|
|
651
|
-
url?: string;
|
|
652
|
-
clientId?: string;
|
|
653
|
-
authMethod?: string;
|
|
654
|
-
};
|
|
655
|
-
type SecretsDescription = ModuleDescriptionBase<"secrets"> & {
|
|
656
|
-
sources: SecretsSourceDescription[];
|
|
657
|
-
};
|
|
658
|
-
type KmsPoolDescription = {
|
|
659
|
-
name: string;
|
|
660
|
-
source?: string;
|
|
661
|
-
path: string;
|
|
662
|
-
ready: boolean;
|
|
663
|
-
};
|
|
664
|
-
type KmsDescription = ModuleDescriptionBase<"kms"> & {
|
|
665
|
-
pools: KmsPoolDescription[];
|
|
666
|
-
};
|
|
667
|
-
type OtelSignalDescription = {
|
|
668
|
-
enabled: boolean;
|
|
669
|
-
endpoint?: string;
|
|
670
|
-
timeoutMillis?: number;
|
|
671
|
-
concurrencyLimit?: number;
|
|
672
|
-
exportIntervalMillis?: number;
|
|
673
|
-
exportTimeoutMillis?: number;
|
|
674
|
-
};
|
|
675
|
-
type OtelDescription = ModuleDescriptionBase<"otel"> & {
|
|
676
|
-
type?: OtelProviderType;
|
|
677
|
-
name?: string;
|
|
678
|
-
endpoint?: string;
|
|
679
|
-
protocol?: OtelProtocol;
|
|
680
|
-
apiKeyPool?: string;
|
|
681
|
-
apiKeyHeader?: string;
|
|
682
|
-
oauth?: {
|
|
683
|
-
tokenUrl: string;
|
|
684
|
-
clientId: string;
|
|
685
|
-
scope?: string;
|
|
686
|
-
audience?: string;
|
|
687
|
-
};
|
|
688
|
-
version?: string;
|
|
689
|
-
deploymentEnvironment?: string;
|
|
690
|
-
resourceAttributes?: OtelAttributes;
|
|
691
|
-
levels?: OtelLevels;
|
|
692
|
-
console?: OtelConsoleMode;
|
|
693
|
-
signals: {
|
|
694
|
-
traces: OtelSignalDescription;
|
|
695
|
-
metrics: OtelSignalDescription;
|
|
696
|
-
logs: OtelSignalDescription;
|
|
697
|
-
};
|
|
698
|
-
};
|
|
699
|
-
type OaaDescription = {
|
|
700
|
-
ready: boolean;
|
|
701
|
-
url?: string;
|
|
702
|
-
providerId?: string;
|
|
703
|
-
datasourceId?: string;
|
|
704
|
-
applicationName?: string;
|
|
705
|
-
applicationType?: string;
|
|
706
|
-
population?: Record<string, string>;
|
|
707
|
-
fullSync: boolean;
|
|
708
|
-
};
|
|
709
|
-
type AuthzDescription = ModuleDescriptionBase<"authz"> & {
|
|
710
|
-
scopesAsEntitlements: boolean;
|
|
711
|
-
trustedProvisioningClients: Array<{
|
|
712
|
-
issuer: string;
|
|
713
|
-
audience: string | string[];
|
|
714
|
-
clientId: string;
|
|
715
|
-
permissions: string[];
|
|
716
|
-
}>;
|
|
717
|
-
oaa?: OaaDescription;
|
|
718
|
-
stores: {
|
|
719
|
-
accessStore: boolean;
|
|
720
|
-
accessIndex: boolean;
|
|
721
|
-
catalogStore: boolean;
|
|
722
|
-
resources: boolean;
|
|
723
|
-
};
|
|
724
|
-
};
|
|
725
|
-
type TmDescription = ModuleDescriptionBase<"tm"> & {
|
|
726
|
-
enabled: boolean;
|
|
727
|
-
integrator?: {
|
|
728
|
-
id: string;
|
|
729
|
-
name?: string;
|
|
730
|
-
url: string;
|
|
731
|
-
issuer: string;
|
|
732
|
-
jwksUri: string;
|
|
733
|
-
audience: string;
|
|
734
|
-
clientId: string;
|
|
735
|
-
};
|
|
736
|
-
consentTtlSeconds?: number;
|
|
737
|
-
maxRedeemAttempts?: number;
|
|
738
|
-
};
|
|
739
|
-
type ModuleDescription = SsoDescription | CiamDescription | IamDescription | WorkloadDescription | SecretsDescription | KmsDescription | OtelDescription | AuthzDescription | TmDescription;
|
|
740
|
-
type IoniteDescription = {
|
|
741
|
-
id?: string;
|
|
742
|
-
sdk: {
|
|
743
|
-
version: string;
|
|
744
|
-
catalogVersion: number;
|
|
745
|
-
};
|
|
746
|
-
basePath: string;
|
|
747
|
-
urls: CapabilityEndpointUrls;
|
|
748
|
-
ok: boolean;
|
|
749
|
-
applied: boolean;
|
|
750
|
-
config: ConfigApplyStatus;
|
|
751
|
-
modules: Record<ModuleName, ModuleReadinessState & {
|
|
752
|
-
description?: ModuleDescription;
|
|
753
|
-
}>;
|
|
754
|
-
};
|
|
755
|
-
/**
|
|
756
|
-
* Shared minimal identity fields used to build both the workforce user
|
|
757
|
-
* record (`BaseUser`) and the CIAM customer record (`BaseCustomer`), as well
|
|
758
|
-
* as the authenticated session types (`WorkforceUser`, `Customer`).
|
|
759
|
-
*
|
|
760
|
-
* This is an internal structural base and is intentionally not part of the
|
|
761
|
-
* public API surface; consumers extend the `BaseUser` Zod/Valibot schema
|
|
762
|
-
* instead.
|
|
763
|
-
*/
|
|
764
|
-
interface BaseUserFields {
|
|
765
|
-
/**
|
|
766
|
-
* Unique identifier for the user
|
|
767
|
-
*/
|
|
768
|
-
id?: string;
|
|
769
|
-
/**
|
|
770
|
-
* REQUIRED. Unique identifier for login
|
|
771
|
-
*/
|
|
772
|
-
userName: string;
|
|
773
|
-
/**
|
|
774
|
-
* REQUIRED. Simple display name
|
|
775
|
-
*/
|
|
776
|
-
name: string;
|
|
777
|
-
/**
|
|
778
|
-
* REQUIRED. Primary email address
|
|
779
|
-
*/
|
|
780
|
-
email: string;
|
|
781
|
-
/**
|
|
782
|
-
* URL to user's avatar/profile picture
|
|
783
|
-
*/
|
|
784
|
-
avatar?: string;
|
|
785
|
-
/**
|
|
786
|
-
* User type (e.g., "employee", "contractor", "customer").
|
|
787
|
-
* Shared by SSO/CIAM and enterprise/SCIM user representations.
|
|
788
|
-
*/
|
|
789
|
-
userType?: string;
|
|
790
|
-
}
|
|
791
|
-
/**
|
|
792
|
-
* Shared types for paginated list operations across stores.
|
|
793
|
-
*
|
|
794
|
-
* List methods return a ListResult with total, count, items, size, page, and pages.
|
|
795
|
-
* Options accept optional start (0-based), limit (page size), and filter.
|
|
796
|
-
*
|
|
797
|
-
* ORDERING CONTRACT: `list()` does NOT accept a caller-specified sort. Every store MUST return items
|
|
798
|
-
* in a stable, deterministic order (recommended: primary key ascending) so that offset pagination is
|
|
799
|
-
* coherent across pages — page N+1 must continue exactly where page N ended for an unchanged dataset.
|
|
800
|
-
* UI-style arbitrary sorting is the app's concern (sort the returned page, or push ORDER BY into a
|
|
801
|
-
* SQL/search-backed custom store); the SDK only guarantees deterministic paging.
|
|
802
|
-
*/
|
|
803
|
-
/**
|
|
804
|
-
* Result of a paginated list operation.
|
|
805
|
-
*
|
|
806
|
-
* @template T - Item type (e.g. Group, BaseUser, BaseTenant)
|
|
208
|
+
* Result of a paginated list operation.
|
|
209
|
+
*
|
|
210
|
+
* @template T - Item type (e.g. Group, BaseUser, BaseTenant)
|
|
807
211
|
*/
|
|
808
212
|
interface ListResult<T> {
|
|
809
213
|
/** Total number of records matching (before pagination). */
|
|
@@ -1567,11 +971,10 @@ type WorkloadIdentity = {
|
|
|
1567
971
|
/** Granted OAuth scopes (space-delimited). */
|
|
1568
972
|
scope?: string;
|
|
1569
973
|
/**
|
|
1570
|
-
*
|
|
1571
|
-
*
|
|
1572
|
-
* helpers; `undefined` falls back to the global `RemoteConfig.authz.scopesAsEntitlements`.
|
|
974
|
+
* Claim-derived entitlements for this request. Present only when the matched incoming IdP
|
|
975
|
+
* configured `claimsAsEntitlements`. Never persisted.
|
|
1573
976
|
*/
|
|
1574
|
-
|
|
977
|
+
derivedEntitlements?: DerivedEntitlement[];
|
|
1575
978
|
/**
|
|
1576
979
|
* Enterprise Controlled ID for this workload (`ecid:<realm>:<opaque>`), when carried on the token
|
|
1577
980
|
* `ecid` claim or enriched from a wired `WorkloadIdentityStore`. A workload is its own governance
|
|
@@ -1953,165 +1356,823 @@ type BaseWorkloadIdentitySdkFields = {
|
|
|
1953
1356
|
/** Optional free-form metadata bag. */
|
|
1954
1357
|
metadata?: Record<string, unknown>;
|
|
1955
1358
|
};
|
|
1956
|
-
type BaseWorkloadIdentityReservedKey = keyof BaseWorkloadIdentitySdkFields;
|
|
1957
|
-
type BaseWorkloadIdentity<TExtended = object> = BaseWorkloadIdentitySdkFields & NoReserved<TExtended, BaseWorkloadIdentityReservedKey, "id">;
|
|
1958
|
-
/**
|
|
1959
|
-
* Abstract interface for workload identity storage backends. Implement to back the registry with
|
|
1960
|
-
* in-memory, Redis, or a database. Mirrors {@link UserStore}.
|
|
1961
|
-
*
|
|
1962
|
-
* @template TExtended - Type-safe custom data that consumers can add to workload identities.
|
|
1963
|
-
*/
|
|
1964
|
-
interface WorkloadIdentityStore<TExtended = object> {
|
|
1965
|
-
/**
|
|
1966
|
-
* Retrieve a workload identity by its unique id.
|
|
1967
|
-
*
|
|
1968
|
-
* @param id - The workload's unique identifier.
|
|
1969
|
-
* @returns The workload identity if found, undefined otherwise.
|
|
1970
|
-
*/
|
|
1971
|
-
get(id: string): Promise<BaseWorkloadIdentity<TExtended> | undefined>;
|
|
1972
|
-
/**
|
|
1973
|
-
* Retrieve a workload identity by matching identifying attributes (e.g. `clientId`, `externalId`).
|
|
1974
|
-
*
|
|
1975
|
-
* @param identity - The workload identity to look up.
|
|
1976
|
-
* @returns The workload identity if found, undefined otherwise.
|
|
1977
|
-
*/
|
|
1978
|
-
lookup(identity: BaseWorkloadIdentity<TExtended>): Promise<BaseWorkloadIdentity<TExtended> | undefined>;
|
|
1979
|
-
/**
|
|
1980
|
-
* Optional indexed lookup by `externalId`. When omitted, callers fall back to `lookup` or a list scan.
|
|
1981
|
-
*/
|
|
1982
|
-
getByExternalId?(externalId: string): Promise<BaseWorkloadIdentity<TExtended> | undefined>;
|
|
1983
|
-
/**
|
|
1984
|
-
* Create or update a workload identity. If a record with the same `id` exists it is updated,
|
|
1985
|
-
* otherwise a new record is created.
|
|
1986
|
-
*
|
|
1987
|
-
* @param identity - The workload identity to store.
|
|
1988
|
-
*/
|
|
1989
|
-
upsert(identity: BaseWorkloadIdentity<TExtended>): Promise<BaseWorkloadIdentity<TExtended>>;
|
|
1990
|
-
/**
|
|
1991
|
-
* Delete a workload identity by id.
|
|
1992
|
-
*
|
|
1993
|
-
* @param id - The workload's unique identifier.
|
|
1994
|
-
* @returns The number of records deleted (0 or 1).
|
|
1995
|
-
*/
|
|
1996
|
-
delete(id: string): Promise<number>;
|
|
1997
|
-
/**
|
|
1998
|
-
* List workload identities with optional pagination and sort.
|
|
1999
|
-
*
|
|
2000
|
-
* @param options - Optional start (0-based), limit (page size), and sort.
|
|
2001
|
-
* @returns ListResult with total, count, items, size, page, pages.
|
|
2002
|
-
*/
|
|
2003
|
-
list(options?: ListOptions): Promise<ListResult<BaseWorkloadIdentity<TExtended>>>;
|
|
2004
|
-
}
|
|
2005
|
-
/**
|
|
2006
|
-
* IAM delta egress mode (RemoteConfig/ECI intent). Selects how IAM-visible runtime changes that
|
|
2007
|
-
* occur inside the application are surfaced to the enterprise's IAM/governance layer:
|
|
2008
|
-
*
|
|
2009
|
-
* - `'patch'`: outbound SCIM into the IAM tool (per-resource POST/PUT/PATCH/DELETE,
|
|
2010
|
-
* correlated by the App-owned id carried as SCIM `externalId`). The IAM tool's view stays fresh as users, materialized entitlement
|
|
2011
|
-
* definitions, and access change in the app. See the README "IAM delta egress" section.
|
|
2012
|
-
*
|
|
2013
|
-
* Origin/trust: every push is authenticated with the app's outgoing workload client (OAuth bearer);
|
|
2014
|
-
* the receiver treats the authenticated workload identity as the verified origin. Audit
|
|
2015
|
-
* accountability lives with the IdP that authenticated the workload and the IAM tool that granted
|
|
2016
|
-
* it access. The SDK only surfaces the signal; it never dictates the enterprise's workflow or
|
|
2017
|
-
* policy (flag, auto-revoke + notify, or simply audit).
|
|
2018
|
-
*/
|
|
2019
|
-
type IamDeltaMode = "patch";
|
|
2020
|
-
|
|
2021
|
-
|
|
2022
|
-
|
|
2023
|
-
|
|
2024
|
-
|
|
2025
|
-
|
|
2026
|
-
|
|
1359
|
+
type BaseWorkloadIdentityReservedKey = keyof BaseWorkloadIdentitySdkFields;
|
|
1360
|
+
type BaseWorkloadIdentity<TExtended = object> = BaseWorkloadIdentitySdkFields & NoReserved<TExtended, BaseWorkloadIdentityReservedKey, "id">;
|
|
1361
|
+
/**
|
|
1362
|
+
* Abstract interface for workload identity storage backends. Implement to back the registry with
|
|
1363
|
+
* in-memory, Redis, or a database. Mirrors {@link UserStore}.
|
|
1364
|
+
*
|
|
1365
|
+
* @template TExtended - Type-safe custom data that consumers can add to workload identities.
|
|
1366
|
+
*/
|
|
1367
|
+
interface WorkloadIdentityStore<TExtended = object> {
|
|
1368
|
+
/**
|
|
1369
|
+
* Retrieve a workload identity by its unique id.
|
|
1370
|
+
*
|
|
1371
|
+
* @param id - The workload's unique identifier.
|
|
1372
|
+
* @returns The workload identity if found, undefined otherwise.
|
|
1373
|
+
*/
|
|
1374
|
+
get(id: string): Promise<BaseWorkloadIdentity<TExtended> | undefined>;
|
|
1375
|
+
/**
|
|
1376
|
+
* Retrieve a workload identity by matching identifying attributes (e.g. `clientId`, `externalId`).
|
|
1377
|
+
*
|
|
1378
|
+
* @param identity - The workload identity to look up.
|
|
1379
|
+
* @returns The workload identity if found, undefined otherwise.
|
|
1380
|
+
*/
|
|
1381
|
+
lookup(identity: BaseWorkloadIdentity<TExtended>): Promise<BaseWorkloadIdentity<TExtended> | undefined>;
|
|
1382
|
+
/**
|
|
1383
|
+
* Optional indexed lookup by `externalId`. When omitted, callers fall back to `lookup` or a list scan.
|
|
1384
|
+
*/
|
|
1385
|
+
getByExternalId?(externalId: string): Promise<BaseWorkloadIdentity<TExtended> | undefined>;
|
|
1386
|
+
/**
|
|
1387
|
+
* Create or update a workload identity. If a record with the same `id` exists it is updated,
|
|
1388
|
+
* otherwise a new record is created.
|
|
1389
|
+
*
|
|
1390
|
+
* @param identity - The workload identity to store.
|
|
1391
|
+
*/
|
|
1392
|
+
upsert(identity: BaseWorkloadIdentity<TExtended>): Promise<BaseWorkloadIdentity<TExtended>>;
|
|
1393
|
+
/**
|
|
1394
|
+
* Delete a workload identity by id.
|
|
1395
|
+
*
|
|
1396
|
+
* @param id - The workload's unique identifier.
|
|
1397
|
+
* @returns The number of records deleted (0 or 1).
|
|
1398
|
+
*/
|
|
1399
|
+
delete(id: string): Promise<number>;
|
|
1400
|
+
/**
|
|
1401
|
+
* List workload identities with optional pagination and sort.
|
|
1402
|
+
*
|
|
1403
|
+
* @param options - Optional start (0-based), limit (page size), and sort.
|
|
1404
|
+
* @returns ListResult with total, count, items, size, page, pages.
|
|
1405
|
+
*/
|
|
1406
|
+
list(options?: ListOptions): Promise<ListResult<BaseWorkloadIdentity<TExtended>>>;
|
|
1407
|
+
}
|
|
1408
|
+
/**
|
|
1409
|
+
* IAM delta egress mode (RemoteConfig/ECI intent). Selects how IAM-visible runtime changes that
|
|
1410
|
+
* occur inside the application are surfaced to the enterprise's IAM/governance layer:
|
|
1411
|
+
*
|
|
1412
|
+
* - `'patch'`: outbound SCIM into the IAM tool (per-resource POST/PUT/PATCH/DELETE,
|
|
1413
|
+
* correlated by the App-owned id carried as SCIM `externalId`). The IAM tool's view stays fresh as users, materialized entitlement
|
|
1414
|
+
* definitions, and access change in the app. See the README "IAM delta egress" section.
|
|
1415
|
+
*
|
|
1416
|
+
* Origin/trust: every push is authenticated with the app's outgoing workload client (OAuth bearer);
|
|
1417
|
+
* the receiver treats the authenticated workload identity as the verified origin. Audit
|
|
1418
|
+
* accountability lives with the IdP that authenticated the workload and the IAM tool that granted
|
|
1419
|
+
* it access. The SDK only surfaces the signal; it never dictates the enterprise's workflow or
|
|
1420
|
+
* policy (flag, auto-revoke + notify, or simply audit).
|
|
1421
|
+
*/
|
|
1422
|
+
type IamDeltaMode = "patch";
|
|
1423
|
+
/** ConfigSource-owned authenticated destination for the AccessRequests protocol. */
|
|
1424
|
+
type AccessRequestsDestination = {
|
|
1425
|
+
url: string;
|
|
1426
|
+
/** Named outgoing workload client. Omit to use the default workload server identity. */
|
|
1427
|
+
audience?: string;
|
|
1428
|
+
};
|
|
1429
|
+
type AccessRequestCreate = {
|
|
1430
|
+
subject: string;
|
|
1431
|
+
subjectType: SubjectType;
|
|
1432
|
+
targetType: EntitlementType;
|
|
1433
|
+
target: string;
|
|
1434
|
+
operation: "grant" | "revoke";
|
|
1435
|
+
justification?: string;
|
|
1436
|
+
};
|
|
1437
|
+
type AccessRequestResult = {
|
|
1438
|
+
id: string;
|
|
1439
|
+
status: "pending" | "approved" | "denied";
|
|
1440
|
+
operation: "grant" | "revoke";
|
|
1441
|
+
trackingUrl: string;
|
|
1442
|
+
};
|
|
1443
|
+
/** SCIM resource types the delta patch adapter addresses. */
|
|
1444
|
+
type IamDeltaResourceType = "user" | "group" | "workload" | "customer";
|
|
1445
|
+
/** Destination-owned reference captured from a SCIM User/Group response. */
|
|
1446
|
+
type DestinationReference = {
|
|
1447
|
+
/** Service-provider-assigned SCIM resource id. */
|
|
1448
|
+
providerId: string;
|
|
1449
|
+
/** IAM-owned deep link where access to an entitlement can be requested, when supplied. */
|
|
1450
|
+
requestUrl?: string;
|
|
1451
|
+
};
|
|
1452
|
+
/**
|
|
1453
|
+
* Full IAM delta snapshot supplied by the app's maintenance/reconcile path. It mirrors the entities
|
|
1454
|
+
* visible through IAM aggregation: users, durable entitlement definitions, and active access roots.
|
|
1455
|
+
*/
|
|
1456
|
+
type IamDeltaReconcileInput = {
|
|
1457
|
+
users?: Iterable<BaseUser> | AsyncIterable<BaseUser>;
|
|
1458
|
+
workloads?: Iterable<BaseWorkloadIdentity> | AsyncIterable<BaseWorkloadIdentity>;
|
|
1459
|
+
customers?: Iterable<BaseCustomer> | AsyncIterable<BaseCustomer>;
|
|
1460
|
+
groups?: Iterable<Group> | AsyncIterable<Group>;
|
|
1461
|
+
roles?: Iterable<Role> | AsyncIterable<Role>;
|
|
1462
|
+
permissions?: Iterable<Permission> | AsyncIterable<Permission>;
|
|
1463
|
+
access?: Iterable<AccessChange> | AsyncIterable<AccessChange>;
|
|
1464
|
+
};
|
|
1465
|
+
/** Result of an app-driven full reconcile (re-push of definitions, users, and active roots). */
|
|
1466
|
+
type IamDeltaReconcileResult = {
|
|
1467
|
+
pushed: number;
|
|
1468
|
+
skipped: number;
|
|
1469
|
+
errors: string[];
|
|
1470
|
+
};
|
|
1471
|
+
/**
|
|
1472
|
+
* Projects observed runtime mutations to the configured IAM delta destination. The invariant is:
|
|
1473
|
+
* every runtime mutation the SDK observes that would change what IAM full sync shows must also
|
|
1474
|
+
* egress through this handle. That includes users, materialized entitlement definitions, and access
|
|
1475
|
+
* roots. Code templates are not pushed during config apply.
|
|
1476
|
+
*
|
|
1477
|
+
* Request-triggered methods resolve when projection completes (or immediately when not ready). They
|
|
1478
|
+
* are best-effort egress: the SCIM mutation path awaits them inside the request, but a rejection is
|
|
1479
|
+
* caught and reported as degraded egress — it never turns a committed store mutation into a SCIM
|
|
1480
|
+
* error. Reactive catalog/resource events use the same methods outside a request and warn on failure.
|
|
1481
|
+
*
|
|
1482
|
+
* Readiness follows the shared contract: `isReady()` is a synchronous check; `ready(timeout?)`
|
|
1483
|
+
* resolves once the emitter first becomes usable.
|
|
1484
|
+
*/
|
|
1485
|
+
interface IamDeltaEmitter {
|
|
1486
|
+
/** Upsert a full SCIM User representation at the destination. */
|
|
1487
|
+
onUserUpsert(user: BaseUser): Promise<void>;
|
|
1488
|
+
/** Delete a destination User identified strictly by externalId. */
|
|
1489
|
+
onUserDelete(externalId: string): Promise<void>;
|
|
1490
|
+
/** Upsert a full AppDev-projected SCIM Workload representation at the destination. */
|
|
1491
|
+
onWorkloadUpsert(workload: BaseWorkloadIdentity): Promise<void>;
|
|
1492
|
+
/** Delete a destination Workload identified by externalId (falling back to its App-owned id). */
|
|
1493
|
+
onWorkloadDelete(externalId: string): Promise<void>;
|
|
1494
|
+
/** Upsert a full AppDev-projected SCIM Customer representation at the destination. */
|
|
1495
|
+
onCustomerUpsert(customer: BaseCustomer): Promise<void>;
|
|
1496
|
+
/** Delete a destination Customer identified by externalId (falling back to its App-owned id). */
|
|
1497
|
+
onCustomerDelete(externalId: string): Promise<void>;
|
|
1498
|
+
/** Upsert a full SCIM Group representation for a group, role, or permission definition. */
|
|
1499
|
+
onEntitlementUpsert(entity: Entitlement, type: EntitlementType): Promise<void>;
|
|
1500
|
+
/** Delete a destination entitlement Group identified by the App-owned catalog id. */
|
|
1501
|
+
onEntitlementDelete(type: EntitlementType, id: string): Promise<void>;
|
|
1502
|
+
/** Project a granted root; resolves on completion (or immediately when not ready), rejects on push failure. */
|
|
1503
|
+
onGrant(change: AccessChange): Promise<void>;
|
|
1504
|
+
/** Project a revoked root; resolves on completion (or immediately when not ready), rejects on push failure. */
|
|
1505
|
+
onRevoke(change: AccessChange): Promise<void>;
|
|
1506
|
+
/** Re-push the complete IAM-visible snapshot to the destination (app-driven full reconcile). */
|
|
1507
|
+
reconcile(input: IamDeltaReconcileInput): Promise<IamDeltaReconcileResult>;
|
|
1508
|
+
/**
|
|
1509
|
+
* Submit an on-behalf access request at `${iam.url}/AccessRequests`. Requires only the
|
|
1510
|
+
* destination channel (`url` plus the `deltaAudience` workload client) — not `isReady()`, which
|
|
1511
|
+
* additionally demands delta egress (a per-kind `'patch'` mode and its receipt stores). A tenant
|
|
1512
|
+
* whose IAM aggregates by pull alone may still submit requests.
|
|
1513
|
+
*/
|
|
1514
|
+
requestAccess(input: AccessRequestCreate): Promise<AccessRequestResult>;
|
|
1515
|
+
/** Read the current state of a request previously submitted to this destination. */
|
|
1516
|
+
getAccessRequest(id: string): Promise<AccessRequestResult>;
|
|
1517
|
+
/**
|
|
1518
|
+
* Read a previously captured destination reference without making a network request. Returns
|
|
1519
|
+
* undefined until the resource has been resolved or pushed to the configured IAM destination.
|
|
1520
|
+
* `correlationId` is a User's `externalId` or an entitlement's App-owned catalog `id`.
|
|
1521
|
+
*/
|
|
1522
|
+
getDestinationRef(resourceType: IamDeltaResourceType, correlationId: string): Promise<DestinationReference | undefined>;
|
|
1523
|
+
isReady(): boolean;
|
|
1524
|
+
ready(timeout?: number): Promise<void>;
|
|
1525
|
+
}
|
|
1526
|
+
/** Built-in provider types. `oidc` is a generic OIDC provider; `magic-link` is the passwordless flow. */
|
|
1527
|
+
type CIAMProviderType = "oidc" | "google" | "github" | "microsoft" | "apple" | "magic-link";
|
|
1528
|
+
/** Branding colors for rendering a provider button in light and dark themes. */
|
|
1529
|
+
type CIAMProviderColors = {
|
|
1530
|
+
/** Background/brand color for light theme (hex or CSS color). */
|
|
1531
|
+
light: string;
|
|
1532
|
+
/** Background/brand color for dark theme (hex or CSS color). */
|
|
1533
|
+
dark: string;
|
|
1534
|
+
/** Optional secondary/accent color. */
|
|
1535
|
+
secondary?: string;
|
|
1536
|
+
};
|
|
1537
|
+
/** Operator-supplied branding so the UI can render a provider list without hardcoding. */
|
|
1538
|
+
type CIAMProviderBranding = {
|
|
1539
|
+
/** Human-readable name shown on the login button (e.g. "Google"). */
|
|
1540
|
+
displayName: string;
|
|
1541
|
+
/** External icon URL (typically an SVG/PNG hosted on a CDN). */
|
|
1542
|
+
iconUrl?: string;
|
|
1543
|
+
/** Light/dark brand colors. */
|
|
1544
|
+
colors?: CIAMProviderColors;
|
|
1545
|
+
/** Optional provider info/marketing URL. */
|
|
1546
|
+
url?: string;
|
|
1547
|
+
};
|
|
1548
|
+
/**
|
|
1549
|
+
* A single CIAM provider declaration. OIDC/OAuth2 endpoint and credential
|
|
1550
|
+
* fields come from the ConfigSource (never application code).
|
|
1551
|
+
*/
|
|
1552
|
+
type CIAMProviderConfig = {
|
|
1553
|
+
/** Provider adapter type. Selects defaults and claim mapping. */
|
|
1554
|
+
type: CIAMProviderType;
|
|
1555
|
+
/** Whether this provider is enabled. Defaults to true when omitted. */
|
|
1556
|
+
enabled?: boolean;
|
|
1557
|
+
/** Recommended display order (ascending). Ties broken by declaration order. */
|
|
1558
|
+
order?: number;
|
|
1559
|
+
/** UI branding metadata. */
|
|
1560
|
+
branding?: CIAMProviderBranding;
|
|
1561
|
+
/** OIDC issuer/authority (used for discovery when explicit endpoints are omitted). */
|
|
1562
|
+
authority?: string;
|
|
1563
|
+
/** Authorization endpoint (overrides preset). */
|
|
1564
|
+
authorizationUrl?: string;
|
|
1565
|
+
/** Token endpoint (overrides preset). */
|
|
1566
|
+
tokenUrl?: string;
|
|
1567
|
+
/** JWKS endpoint for ID token verification (overrides preset). */
|
|
1568
|
+
jwksUri?: string;
|
|
1569
|
+
/** OAuth2 UserInfo endpoint for providers without an ID token (e.g. GitHub). */
|
|
1570
|
+
userInfoUrl?: string;
|
|
1571
|
+
/** OAuth2 client id (ConfigSource-only). */
|
|
1572
|
+
clientId?: string;
|
|
1573
|
+
/** OAuth2 client secret (ConfigSource-only). */
|
|
1574
|
+
clientSecret?: string;
|
|
1575
|
+
/** Requested scope (overrides preset). */
|
|
1576
|
+
scope?: string;
|
|
1577
|
+
/** Apple: team id for client-secret generation. */
|
|
1578
|
+
teamId?: string;
|
|
1579
|
+
/** Apple: key id for client-secret generation. */
|
|
1580
|
+
keyId?: string;
|
|
1581
|
+
/** Apple: PKCS#8 PEM private key for client-secret generation. */
|
|
1582
|
+
privateKey?: string;
|
|
1583
|
+
/**
|
|
1584
|
+
* ConfigSource-only. When set, this provider's token claims are derived into session-scoped
|
|
1585
|
+
* customer entitlements at login. Magic link has no issuer and ignores this block.
|
|
1586
|
+
*/
|
|
1587
|
+
claimsAsEntitlements?: ClaimsAsEntitlements;
|
|
1588
|
+
/** ConfigSource-only IdP assignment workflow used when IAM assignment is `'idp'`. */
|
|
1589
|
+
accessRequests?: AccessRequestsDestination;
|
|
1590
|
+
};
|
|
1591
|
+
/** Sanitized provider entry returned by the discovery endpoint for the UI. */
|
|
1592
|
+
type CIAMProviderDescriptor = {
|
|
1593
|
+
/** Provider key (matches the RemoteConfig map key); used as `?provider=`. */
|
|
1594
|
+
name: string;
|
|
1595
|
+
type: CIAMProviderType;
|
|
1596
|
+
displayName: string;
|
|
1597
|
+
/** SDK-derived login URL to navigate to (begins the flow). */
|
|
1598
|
+
loginUrl: string;
|
|
1599
|
+
iconUrl?: string;
|
|
1600
|
+
colors?: CIAMProviderColors;
|
|
1601
|
+
url?: string;
|
|
1602
|
+
};
|
|
1603
|
+
/**
|
|
1604
|
+
* Light display cookies (`${cookiesPrefix}.profile`).
|
|
1605
|
+
*
|
|
1606
|
+
* The envelope is SDK-owned. App code supplies only `user`. The cookie is not an
|
|
1607
|
+
* authentication input: the server never reads it to resolve a session, and the browser
|
|
1608
|
+
* may forge it. `expiresAt` is display metadata so a client can order entries without a
|
|
1609
|
+
* round trip; authoritative expiry is the peer `${cookiesPrefix}.session` record.
|
|
1610
|
+
*/
|
|
1611
|
+
declare const DISPLAY_COOKIE_SUFFIX = ".profile";
|
|
1612
|
+
declare const DISPLAY_COOKIE_VERSION = 1;
|
|
1613
|
+
declare const DEFAULT_DISPLAY_COOKIE_MAX = 10;
|
|
1614
|
+
declare const DEFAULT_DISCOVERED_COOKIE_MAX = 10;
|
|
1615
|
+
declare const DEFAULT_DISCOVERED_COOKIE_TTL_SECONDS: number;
|
|
1616
|
+
declare const DISCOVERED_COOKIE_PREFIX = "ion.discovered";
|
|
1617
|
+
type DisplayCookieConfig = {
|
|
1618
|
+
/**
|
|
1619
|
+
* When true, the SDK writes a non-HttpOnly display cookie beside the opaque session cookie.
|
|
1620
|
+
* ConfigSource-only. Default false.
|
|
1621
|
+
*/
|
|
1622
|
+
enabled?: boolean;
|
|
1623
|
+
/**
|
|
1624
|
+
* How many display cookies a single response may leave on the browser, newest session window
|
|
1625
|
+
* first. ConfigSource-only. Values below 1 fall back to {@link DEFAULT_DISPLAY_COOKIE_MAX}.
|
|
1626
|
+
* @default 10
|
|
1627
|
+
*/
|
|
1628
|
+
max?: number;
|
|
1629
|
+
/**
|
|
1630
|
+
* Session-less tenant hints written by an App after an explicit directory lookup.
|
|
1631
|
+
* ConfigSource-only and off unless `enabled` is true.
|
|
1632
|
+
*/
|
|
1633
|
+
discovered?: DiscoveredDisplayCookieConfig;
|
|
1634
|
+
};
|
|
1635
|
+
type DiscoveredDisplayCookieConfig = {
|
|
1636
|
+
enabled?: boolean;
|
|
1637
|
+
/** Browser hint lifetime. This is not a session expiry. @default 14400 */
|
|
1638
|
+
ttlSeconds?: number;
|
|
1639
|
+
/** Independent cap; discovered hints never displace live-session entries. @default 10 */
|
|
1640
|
+
max?: number;
|
|
1641
|
+
};
|
|
1642
|
+
/** What `${basePath}/auth/user` and `${basePath}/auth/customer` return. ConfigSource-only. */
|
|
1643
|
+
type UserEndpointPolicy = "full" | "display" | "off";
|
|
1644
|
+
type DisplayUser = Record<string, string | number | boolean | null>;
|
|
1645
|
+
type DisplayAuthType = "sso" | "ciam";
|
|
1646
|
+
type DisplayCookieEnvelope = {
|
|
1647
|
+
v: typeof DISPLAY_COOKIE_VERSION;
|
|
1648
|
+
/**
|
|
1649
|
+
* Session envelopes omit this field (absent means `'session'`) so the wire format stays identical
|
|
1650
|
+
* to cookies written before discovered hints existed; only discovered hints set it explicitly.
|
|
1651
|
+
* Readers must treat `undefined` as `'session'`.
|
|
1652
|
+
*/
|
|
1653
|
+
kind?: "session" | "discovered";
|
|
1654
|
+
tenantId?: string;
|
|
1655
|
+
authType: DisplayAuthType;
|
|
1656
|
+
/** ISO timestamp copied from the session window at write time. Display only. */
|
|
1657
|
+
expiresAt: string;
|
|
1658
|
+
user: DisplayUser;
|
|
1659
|
+
tenantName?: string;
|
|
1660
|
+
};
|
|
1661
|
+
type DisplayIdentity = {
|
|
1662
|
+
name?: string;
|
|
1663
|
+
email?: string;
|
|
1664
|
+
avatar?: string;
|
|
1665
|
+
};
|
|
1666
|
+
declare function resolveDisplayCookieMax(max: number | undefined): number;
|
|
1667
|
+
declare function resolveDiscoveredCookieMax(max: number | undefined): number;
|
|
1668
|
+
declare function resolveDiscoveredCookieTtlSeconds(ttlSeconds: number | undefined): number;
|
|
1669
|
+
declare function defaultDisplayUser(identity: DisplayIdentity): DisplayUser;
|
|
1670
|
+
/** Drop non-primitives and auth-bearing keys. Display cookies carry UI fields only. */
|
|
1671
|
+
declare function sanitizeDisplayUser(value: unknown): DisplayUser;
|
|
1672
|
+
/**
|
|
1673
|
+
* AppDev projection runs on the full user (including custom attributes). When omitted, or when it
|
|
1674
|
+
* throws, the cookie carries name, email, and avatar only. Forbidden and non-primitive fields are
|
|
1675
|
+
* dropped either way — a projector cannot put a session id or token into the cookie.
|
|
1676
|
+
*/
|
|
1677
|
+
declare function projectDisplayUser<TUser extends object>(user: TUser, projector?: (user: TUser) => unknown): DisplayUser;
|
|
1678
|
+
declare function encodeDisplayCookie(envelope: DisplayCookieEnvelope): string;
|
|
1679
|
+
declare function decodeDisplayCookie(raw: string): DisplayCookieEnvelope | undefined;
|
|
1680
|
+
type ParsedDisplayCookie = {
|
|
1681
|
+
name: string;
|
|
1682
|
+
prefix: string;
|
|
1683
|
+
envelope: DisplayCookieEnvelope;
|
|
1684
|
+
};
|
|
1685
|
+
declare function readDisplayCookies(cookieHeader: string | null | undefined): ParsedDisplayCookie[];
|
|
1686
|
+
/** Client ordering: newest session window first. Invalid timestamps sort last. */
|
|
1687
|
+
declare function compareDisplayExpiryDesc(a: string | undefined, b: string | undefined): number;
|
|
1688
|
+
declare function profileCookieName(cookiesPrefix: string): string;
|
|
1689
|
+
declare function discoveredProfileCookieName(tenantId: string): string;
|
|
1690
|
+
/**
|
|
1691
|
+
* Minimal logger interface compatible with common structured logging patterns.
|
|
1692
|
+
*/
|
|
1693
|
+
interface Logger {
|
|
1694
|
+
trace(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1695
|
+
debug(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1696
|
+
info(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1697
|
+
warn(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1698
|
+
error(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1699
|
+
}
|
|
1700
|
+
/**
|
|
1701
|
+
* Renders a structured logger call as one greppable line while leaving the source fields separate
|
|
1702
|
+
* for telemetry exporters.
|
|
1703
|
+
*/
|
|
1704
|
+
declare function formatLogLine(level: keyof Logger, message: unknown, optionalParams?: unknown[], timestamp?: Date): string;
|
|
1705
|
+
/**
|
|
1706
|
+
* No-op implementation — does nothing for any log level
|
|
1707
|
+
*/
|
|
1708
|
+
declare const silentLogger: Logger;
|
|
1709
|
+
/**
|
|
1710
|
+
* Default logger used until an ionite instance is configured with
|
|
1711
|
+
* an OpenTelemetry-backed logger or an application-provided logger.
|
|
1712
|
+
*/
|
|
1713
|
+
declare const defaultLogger: Logger;
|
|
1714
|
+
/**
|
|
1715
|
+
* Logger that logs messages debug, info, warn, and error to the console.
|
|
1716
|
+
*/
|
|
1717
|
+
declare const debugLogger: Logger;
|
|
1718
|
+
/**
|
|
1719
|
+
* Logger that logs messages info, warn, and error to the console.
|
|
1720
|
+
*/
|
|
1721
|
+
declare const infoLogger: Logger;
|
|
1722
|
+
/**
|
|
1723
|
+
* Logger that logs messages warn and error to the console.
|
|
1724
|
+
*/
|
|
1725
|
+
declare const warnLogger: Logger;
|
|
1726
|
+
/**
|
|
1727
|
+
* Human-readable single-line console logger for local application output.
|
|
1728
|
+
*/
|
|
1729
|
+
declare const prettyLogger: Logger;
|
|
1730
|
+
import { StandardSchemaV1 as StandardSchemaV15 } from "@standard-schema/spec";
|
|
1731
|
+
type ChangeListener = () => void;
|
|
1732
|
+
/**
|
|
1733
|
+
* Reactive source/adapter contract. Implemented by config-source-backed adapters
|
|
1734
|
+
* (for example `SecretsSource`) to advertise change subscription and source liveness.
|
|
1735
|
+
* `isAvailable()` here is an adapter liveness hook and is intentionally distinct from
|
|
1736
|
+
* module readiness (`ModuleReadiness.isReady()` / `ready()`).
|
|
1737
|
+
*/
|
|
1738
|
+
type ReactiveHandle = {
|
|
1739
|
+
beforeChange?(listener: ChangeListener): () => void;
|
|
1740
|
+
afterChange?(listener: ChangeListener): () => void;
|
|
1741
|
+
isAvailable?(): boolean;
|
|
1742
|
+
};
|
|
1743
|
+
/**
|
|
1744
|
+
* Readiness contract for reactive module/service handles whose usability depends on
|
|
1745
|
+
* RemoteConfig that can arrive or change at runtime (for example `ion.secrets`,
|
|
1746
|
+
* `ion.workload`, `ion.otel`, `ion.authz.oaa`).
|
|
1747
|
+
*
|
|
1748
|
+
* - `isReady()` is a synchronous check; use it in request handlers and health probes and
|
|
1749
|
+
* return 503 (or branch) when false instead of blocking.
|
|
1750
|
+
* - `ready(timeout?)` resolves once the handle first becomes usable; use it at startup or
|
|
1751
|
+
* as a feature gate. With no timeout it waits indefinitely; with `timeout > 0` it rejects
|
|
1752
|
+
* after that many milliseconds.
|
|
1753
|
+
*/
|
|
1754
|
+
type ModuleReadiness = {
|
|
1755
|
+
beforeChange?(listener: ChangeListener): () => void;
|
|
1756
|
+
afterChange?(listener: ChangeListener): () => void;
|
|
1757
|
+
isReady?(): boolean;
|
|
1758
|
+
ready?(timeout?: number): Promise<void>;
|
|
1759
|
+
};
|
|
1760
|
+
/**
|
|
1761
|
+
* Canonical ionite module names used by the holistic readiness report and the
|
|
1762
|
+
* `requireReady([...])` helper. These are the config-driven module handles whose readiness can be
|
|
1763
|
+
* composed; `ion.isReady()` itself stays the narrow "config applied" signal and is NOT one of these.
|
|
1764
|
+
*
|
|
1765
|
+
* IAM-delta egress is intentionally NOT a member. Delta patch-back is best-effort and non-fatal (a
|
|
1766
|
+
* failed push only logs `degraded` and is reconciled by a later full sync — the Batch 7 drift-signal
|
|
1767
|
+
* contract), so folding it into `iam` readiness would let a delta-target outage make
|
|
1768
|
+
* `requireReady(['iam'])` false and take the app out of rotation for a signal that is designed not to
|
|
1769
|
+
* block. Apps that DO treat delta as a hard dependency can gate on `ion.iam.delta.isReady()` /
|
|
1770
|
+
* `ion.iam.delta.ready()` explicitly instead.
|
|
1771
|
+
*/
|
|
1772
|
+
type ModuleName = "sso" | "ciam" | "iam" | "workload" | "otel" | "secrets" | "kms" | "authz" | "tm";
|
|
1773
|
+
/** Per-module readiness snapshot in {@link ReadinessReport}. */
|
|
1774
|
+
type ModuleReadinessState = {
|
|
1775
|
+
/** Whether the module is active (present/requested) in the effective config. Inactive modules never block readiness. */
|
|
1776
|
+
active: boolean;
|
|
1777
|
+
/** Synchronous readiness of the module right now (mirrors the module's own `isReady()`). */
|
|
1778
|
+
ready: boolean;
|
|
1779
|
+
/** Human-readable explanation when the module is `active` but not `ready`. */
|
|
1780
|
+
reason?: string;
|
|
1781
|
+
};
|
|
1782
|
+
/**
|
|
1783
|
+
* Holistic, read-only readiness snapshot for an ionite instance. Returned by
|
|
1784
|
+
* `ion.readiness()` and used by the built-in `${basePath}/readyz` endpoint. This is composition
|
|
1785
|
+
* DATA, not a request gate: applications combine it (via `ion.requireReady([...])`) with their own
|
|
1786
|
+
* non-ionite dependency checks to build their health endpoints.
|
|
1787
|
+
*/
|
|
1788
|
+
type ReadinessReport = {
|
|
1789
|
+
/** True when config has been applied (`applied`) and every ACTIVE module is ready. */
|
|
1790
|
+
ok: boolean;
|
|
1791
|
+
/** Whether RemoteConfig has been applied at least once (mirrors `ion.isReady()`). */
|
|
1792
|
+
applied: boolean;
|
|
1793
|
+
/** Per-module readiness keyed by {@link ModuleName}. */
|
|
1794
|
+
modules: Record<ModuleName, ModuleReadinessState>;
|
|
1795
|
+
/** Most recent config-application outcome (last applied time and last error, if any). */
|
|
1796
|
+
config: ConfigApplyStatus;
|
|
1797
|
+
};
|
|
1798
|
+
/** Result of `ion.requireReady(names)`: a synchronous, declarative readiness gate over selected modules. */
|
|
1799
|
+
type RequireReadyResult = {
|
|
1800
|
+
/** True when config is applied and every requested module is ready. */
|
|
1801
|
+
ok: boolean;
|
|
1802
|
+
/** The requested modules that are not ready, with reasons when available. */
|
|
1803
|
+
notReady: Array<{
|
|
1804
|
+
name: ModuleName;
|
|
1805
|
+
reason?: string;
|
|
1806
|
+
}>;
|
|
1807
|
+
};
|
|
1808
|
+
type CapabilityKey = "sso.login" | "sso.jit" | "sso.logout" | "sso.back_channel_logout" | "sso.claims_authz" | "ciam.magic_link" | "ciam.oidc_login" | "ciam.customer" | "ciam.logout" | "ciam.claims_authz" | "iam.users" | "iam.groups" | "iam.workloads" | "iam.customers" | "workload.incoming" | "workload.outgoing" | "workload.claims_authz" | "authz.oaa" | "authz.access_requests" | "tm.integration";
|
|
1809
|
+
type CapabilityEndpointUrls = {
|
|
1810
|
+
readyzUrl: string;
|
|
1811
|
+
capabilitiezUrl: string;
|
|
1812
|
+
sso: {
|
|
1813
|
+
loginUrl: string;
|
|
1814
|
+
userUrl: string;
|
|
1815
|
+
logoutUrl: string;
|
|
1816
|
+
logoutBackChannelUrl: string;
|
|
1817
|
+
refreshUrl: string;
|
|
1818
|
+
callbackUrl: string;
|
|
1819
|
+
};
|
|
1820
|
+
workload: {
|
|
1821
|
+
validateUrl: string;
|
|
1822
|
+
jwksUrl: string;
|
|
1823
|
+
};
|
|
1824
|
+
iam: {
|
|
1825
|
+
basePath: string;
|
|
1826
|
+
usersUrl: string;
|
|
1827
|
+
groupsUrl: string;
|
|
1828
|
+
workloadsUrl: string;
|
|
1829
|
+
customersUrl: string;
|
|
1830
|
+
};
|
|
1831
|
+
ciam: {
|
|
1832
|
+
magicLinkUrl: string;
|
|
1833
|
+
magicLinkLoginUrl: string;
|
|
1834
|
+
customerUrl: string;
|
|
1835
|
+
customerLoginUrl: string;
|
|
1836
|
+
customerCallbackUrl: string;
|
|
1837
|
+
customerProvidersUrl: string;
|
|
1838
|
+
logoutUrl: string;
|
|
1839
|
+
};
|
|
1840
|
+
};
|
|
1841
|
+
type CapabilityState = {
|
|
1842
|
+
module: ModuleName;
|
|
1843
|
+
active: boolean;
|
|
1844
|
+
ready: boolean;
|
|
1845
|
+
testable: boolean;
|
|
1846
|
+
urls?: string[];
|
|
1847
|
+
reason?: string;
|
|
1848
|
+
};
|
|
1849
|
+
type CapabilitiezManifest = {
|
|
1850
|
+
sdk: {
|
|
1851
|
+
/** Runtime @ionite/server version serving this manifest. */
|
|
1852
|
+
version: string;
|
|
1853
|
+
/** Version of the stable capability/test-unit vocabulary. */
|
|
1854
|
+
catalogVersion: number;
|
|
1855
|
+
};
|
|
1856
|
+
basePath: string;
|
|
1857
|
+
urls: CapabilityEndpointUrls;
|
|
1858
|
+
modules: Record<ModuleName, ModuleReadinessState>;
|
|
1859
|
+
capabilities: Record<CapabilityKey, CapabilityState>;
|
|
1860
|
+
/**
|
|
1861
|
+
* True when FrameworkConfig wired a live LFV callback transport. Boolean only — the transport
|
|
1862
|
+
* object, Redis URL, and credentials are never exposed.
|
|
1863
|
+
*/
|
|
1864
|
+
lfvCallbackTransport: boolean;
|
|
1865
|
+
};
|
|
1866
|
+
type OtelSignalName = "traces" | "metrics" | "logs";
|
|
1867
|
+
type OtelProtocol = "http/protobuf" | "http/json";
|
|
1868
|
+
type OtelProviderType = "otlp" | "grafana-lgtm" | "datadog" | "splunk" | "elastic";
|
|
1869
|
+
type OtelLogLevel = "trace" | "debug" | "info" | "warn" | "error";
|
|
1870
|
+
type OtelLevels = Partial<Record<OtelLogLevel, boolean>>;
|
|
1871
|
+
/** Local console mirror policy: disable it or set its minimum emitted severity. */
|
|
1872
|
+
type OtelConsoleMode = "off" | OtelLogLevel;
|
|
1873
|
+
type OtelAttributeValue = string | number | boolean | string[] | number[] | boolean[];
|
|
1874
|
+
type OtelAttributes = Record<string, OtelAttributeValue>;
|
|
1875
|
+
type OtelSignalConfig = {
|
|
1876
|
+
/** Per-signal OTLP endpoint. When omitted, the module appends /v1/{signal} to `endpoint`. */
|
|
1877
|
+
endpoint?: string;
|
|
1878
|
+
headers?: Record<string, string>;
|
|
1879
|
+
timeoutMillis?: number;
|
|
1880
|
+
concurrencyLimit?: number;
|
|
1881
|
+
};
|
|
1882
|
+
type OtelMetricsSignalConfig = OtelSignalConfig & {
|
|
1883
|
+
exportIntervalMillis?: number;
|
|
1884
|
+
exportTimeoutMillis?: number;
|
|
1885
|
+
};
|
|
1886
|
+
type OtelOAuthClientCredentialsConfig = {
|
|
1887
|
+
tokenUrl: string;
|
|
1888
|
+
clientId: string;
|
|
1889
|
+
clientSecret: string;
|
|
1890
|
+
scope?: string;
|
|
1891
|
+
audience?: string;
|
|
1892
|
+
headers?: Record<string, string>;
|
|
1893
|
+
};
|
|
1894
|
+
type OtelLogRecord = {
|
|
1895
|
+
severityNumber?: number;
|
|
1896
|
+
severityText?: string;
|
|
1897
|
+
body?: unknown;
|
|
1898
|
+
attributes?: Record<string, unknown>;
|
|
1899
|
+
};
|
|
1900
|
+
/**
|
|
1901
|
+
* OpenTelemetry config supplied by ConfigSource/RemoteConfig.
|
|
1902
|
+
* Keep environment-specific URLs and credentials here, not in FrameworkConfig.
|
|
1903
|
+
*/
|
|
1904
|
+
type OtelConfig = {
|
|
1905
|
+
type?: OtelProviderType;
|
|
1906
|
+
name: string;
|
|
1907
|
+
endpoint?: string;
|
|
1908
|
+
protocol?: OtelProtocol;
|
|
1909
|
+
headers?: Record<string, string>;
|
|
1910
|
+
apiKey?: string;
|
|
1911
|
+
/** Name of a `RemoteConfig.kms` key pool used for exporter authentication. */
|
|
1912
|
+
apiKeyPool?: string;
|
|
1913
|
+
apiKeyHeader?: string;
|
|
1914
|
+
oauth?: OtelOAuthClientCredentialsConfig;
|
|
1915
|
+
version?: string;
|
|
1916
|
+
deploymentEnvironment?: string;
|
|
1917
|
+
resourceAttributes?: OtelAttributes;
|
|
1918
|
+
levels?: OtelLevels;
|
|
1919
|
+
/** `'off'` exports only to OTel; a level dual-emits at or above that severity. Defaults to `'info'`. */
|
|
1920
|
+
console?: OtelConsoleMode;
|
|
1921
|
+
traces?: boolean | OtelSignalConfig;
|
|
1922
|
+
metrics?: boolean | OtelMetricsSignalConfig;
|
|
1923
|
+
logs?: boolean | OtelSignalConfig;
|
|
1924
|
+
};
|
|
1925
|
+
/**
|
|
1926
|
+
* OpenTelemetry app/runtime wiring supplied by code.
|
|
1927
|
+
* Instrumentation instances and callbacks live here because they are framework-specific code.
|
|
1928
|
+
*/
|
|
1929
|
+
type FrameworkOtelConfig = {
|
|
1930
|
+
levels?: OtelLevels;
|
|
1931
|
+
instrument?: unknown[];
|
|
1932
|
+
/** Optional app-owned destination/renderer for records admitted by `RemoteConfig.otel.console`. */
|
|
1933
|
+
console?: (record: OtelLogRecord) => void;
|
|
1934
|
+
spanProcessors?: unknown[];
|
|
1935
|
+
metricReaders?: unknown[];
|
|
1936
|
+
logRecordProcessors?: unknown[];
|
|
1937
|
+
sampler?: unknown;
|
|
1938
|
+
textMapPropagator?: unknown;
|
|
1939
|
+
contextManager?: unknown;
|
|
1940
|
+
configure?: (options: Record<string, unknown>) => Record<string, unknown> | void;
|
|
1941
|
+
};
|
|
1942
|
+
type Otel = {
|
|
1943
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
1944
|
+
describe(): OtelDescription;
|
|
1945
|
+
beforeChange(listener: ChangeListener): () => void;
|
|
1946
|
+
afterChange(listener: ChangeListener): () => void;
|
|
1947
|
+
isReady(): boolean;
|
|
1948
|
+
ready(timeout?: number): Promise<void>;
|
|
1949
|
+
logger: Logger;
|
|
1950
|
+
forceFlush(): Promise<void>;
|
|
1951
|
+
shutdown(): Promise<void>;
|
|
1952
|
+
};
|
|
1953
|
+
type ModuleDescriptionBase<TModule extends ModuleName> = {
|
|
1954
|
+
module: TModule;
|
|
1955
|
+
active: boolean;
|
|
1956
|
+
ready: boolean;
|
|
1957
|
+
};
|
|
1958
|
+
type CookieDescription = {
|
|
1959
|
+
prefix?: string;
|
|
1960
|
+
path?: string;
|
|
1961
|
+
secure?: boolean;
|
|
1962
|
+
sameSite?: "Strict" | "Lax";
|
|
1963
|
+
domain?: string;
|
|
1964
|
+
};
|
|
1965
|
+
type SsoDescription = ModuleDescriptionBase<"sso"> & {
|
|
1966
|
+
authority?: string;
|
|
1967
|
+
tokenUrl?: string;
|
|
1968
|
+
authorizationUrl?: string;
|
|
1969
|
+
clientId?: string;
|
|
1970
|
+
redirectUri?: string;
|
|
1971
|
+
responseType?: "code";
|
|
1972
|
+
scope?: string;
|
|
1973
|
+
silentRedirectUri?: string;
|
|
1974
|
+
jwksUri?: string;
|
|
1975
|
+
endSessionEndpoint?: string;
|
|
1976
|
+
revocationEndpoint?: string;
|
|
1977
|
+
cookies: CookieDescription;
|
|
1978
|
+
loginStateTtl?: number;
|
|
1979
|
+
rotationGraceSeconds?: number;
|
|
1980
|
+
sessionWindowSeconds?: number;
|
|
1981
|
+
displayCookie?: DisplayCookieConfig;
|
|
1982
|
+
jit: {
|
|
1983
|
+
enabled: boolean;
|
|
1984
|
+
userStore: boolean;
|
|
1985
|
+
};
|
|
1986
|
+
sessionStore: boolean;
|
|
1987
|
+
/** Present when RemoteConfig configured claim-derived entitlements for this workforce issuer. */
|
|
1988
|
+
claimsAsEntitlements?: ClaimsAsEntitlementsDescription;
|
|
1989
|
+
urls: Partial<CapabilityEndpointUrls["sso"]>;
|
|
1990
|
+
};
|
|
1991
|
+
type CiamProviderDescription = {
|
|
1992
|
+
name: string;
|
|
1993
|
+
type: CIAMProviderType;
|
|
1994
|
+
enabled: boolean;
|
|
1995
|
+
order?: number;
|
|
1996
|
+
branding?: CIAMProviderBranding;
|
|
1997
|
+
authority?: string;
|
|
1998
|
+
authorizationUrl?: string;
|
|
1999
|
+
tokenUrl?: string;
|
|
2000
|
+
jwksUri?: string;
|
|
2001
|
+
userInfoUrl?: string;
|
|
2002
|
+
clientId?: string;
|
|
2003
|
+
scope?: string;
|
|
2004
|
+
claimsAsEntitlements?: ClaimsAsEntitlementsDescription;
|
|
2005
|
+
loginUrl: string;
|
|
2006
|
+
};
|
|
2007
|
+
type CiamDescription = ModuleDescriptionBase<"ciam"> & {
|
|
2008
|
+
magicLinkTtl?: number;
|
|
2009
|
+
loginStateTtl?: number;
|
|
2010
|
+
sessionTtl?: number;
|
|
2011
|
+
cookies: CookieDescription;
|
|
2012
|
+
displayCookie?: DisplayCookieConfig;
|
|
2013
|
+
jit: {
|
|
2014
|
+
enabled: boolean;
|
|
2015
|
+
customerStore: boolean;
|
|
2016
|
+
};
|
|
2017
|
+
sessionStore: boolean;
|
|
2018
|
+
magicLinkStore: boolean;
|
|
2019
|
+
providers: CiamProviderDescription[];
|
|
2020
|
+
urls: Partial<CapabilityEndpointUrls["ciam"]>;
|
|
2021
|
+
};
|
|
2022
|
+
type IamPrincipalDescription = {
|
|
2023
|
+
enabled: boolean;
|
|
2024
|
+
assignment: IamAssignmentPolicy;
|
|
2025
|
+
delta?: "patch";
|
|
2026
|
+
storeWired: boolean;
|
|
2027
|
+
};
|
|
2028
|
+
type AccessRequestsChannelsDescription = {
|
|
2029
|
+
iam?: string;
|
|
2030
|
+
sso?: string;
|
|
2031
|
+
ciam: Record<string, string>;
|
|
2032
|
+
};
|
|
2033
|
+
type IamDescription = ModuleDescriptionBase<"iam"> & {
|
|
2034
|
+
url?: string;
|
|
2035
|
+
deltaAudience?: string;
|
|
2036
|
+
accessRequests: AccessRequestsChannelsDescription;
|
|
2037
|
+
users: IamPrincipalDescription;
|
|
2038
|
+
workloads: IamPrincipalDescription;
|
|
2039
|
+
customers: IamPrincipalDescription;
|
|
2040
|
+
groups: {
|
|
2041
|
+
enabled: boolean;
|
|
2042
|
+
catalogWired: boolean;
|
|
2043
|
+
};
|
|
2044
|
+
urls: Partial<CapabilityEndpointUrls["iam"]>;
|
|
2045
|
+
};
|
|
2046
|
+
type WorkloadTrustedIdpDescription = {
|
|
2047
|
+
issuer: string;
|
|
2048
|
+
jwksUri: string;
|
|
2049
|
+
audience: string | string[];
|
|
2050
|
+
claimsAsEntitlements?: ClaimsAsEntitlementsDescription;
|
|
2051
|
+
};
|
|
2052
|
+
type WorkloadClientDescription = {
|
|
2053
|
+
name: string;
|
|
2054
|
+
ready: boolean;
|
|
2055
|
+
clientId?: string;
|
|
2056
|
+
workloadId?: string;
|
|
2057
|
+
idpTokenUrl?: string;
|
|
2058
|
+
scope?: string;
|
|
2059
|
+
audience?: string;
|
|
2060
|
+
authMethod: "client_secret" | "private_key_jwt" | "server_only";
|
|
2061
|
+
};
|
|
2062
|
+
type WorkloadDescription = ModuleDescriptionBase<"workload"> & {
|
|
2063
|
+
incoming: {
|
|
2064
|
+
trustedIdps: WorkloadTrustedIdpDescription[];
|
|
2065
|
+
};
|
|
2066
|
+
outgoing: WorkloadClientDescription[];
|
|
2067
|
+
urls: Partial<CapabilityEndpointUrls["workload"]>;
|
|
2068
|
+
};
|
|
2069
|
+
type SecretsSourceDescription = {
|
|
2070
|
+
name: string;
|
|
2071
|
+
type: "dev" | "gcp" | "vault" | "aws" | "azure";
|
|
2072
|
+
ready: boolean;
|
|
2073
|
+
url?: string;
|
|
2074
|
+
clientId?: string;
|
|
2075
|
+
authMethod?: string;
|
|
2076
|
+
};
|
|
2077
|
+
type SecretsDescription = ModuleDescriptionBase<"secrets"> & {
|
|
2078
|
+
sources: SecretsSourceDescription[];
|
|
2079
|
+
};
|
|
2080
|
+
type KmsPoolDescription = {
|
|
2081
|
+
name: string;
|
|
2082
|
+
source?: string;
|
|
2083
|
+
path: string;
|
|
2084
|
+
ready: boolean;
|
|
2085
|
+
};
|
|
2086
|
+
type KmsDescription = ModuleDescriptionBase<"kms"> & {
|
|
2087
|
+
pools: KmsPoolDescription[];
|
|
2088
|
+
};
|
|
2089
|
+
type OtelSignalDescription = {
|
|
2090
|
+
enabled: boolean;
|
|
2091
|
+
endpoint?: string;
|
|
2092
|
+
timeoutMillis?: number;
|
|
2093
|
+
concurrencyLimit?: number;
|
|
2094
|
+
exportIntervalMillis?: number;
|
|
2095
|
+
exportTimeoutMillis?: number;
|
|
2027
2096
|
};
|
|
2028
|
-
type
|
|
2029
|
-
|
|
2030
|
-
|
|
2031
|
-
|
|
2032
|
-
|
|
2097
|
+
type OtelDescription = ModuleDescriptionBase<"otel"> & {
|
|
2098
|
+
type?: OtelProviderType;
|
|
2099
|
+
name?: string;
|
|
2100
|
+
endpoint?: string;
|
|
2101
|
+
protocol?: OtelProtocol;
|
|
2102
|
+
apiKeyPool?: string;
|
|
2103
|
+
apiKeyHeader?: string;
|
|
2104
|
+
oauth?: {
|
|
2105
|
+
tokenUrl: string;
|
|
2106
|
+
clientId: string;
|
|
2107
|
+
scope?: string;
|
|
2108
|
+
audience?: string;
|
|
2109
|
+
};
|
|
2110
|
+
version?: string;
|
|
2111
|
+
deploymentEnvironment?: string;
|
|
2112
|
+
resourceAttributes?: OtelAttributes;
|
|
2113
|
+
levels?: OtelLevels;
|
|
2114
|
+
console?: OtelConsoleMode;
|
|
2115
|
+
signals: {
|
|
2116
|
+
traces: OtelSignalDescription;
|
|
2117
|
+
metrics: OtelSignalDescription;
|
|
2118
|
+
logs: OtelSignalDescription;
|
|
2119
|
+
};
|
|
2033
2120
|
};
|
|
2034
|
-
|
|
2035
|
-
|
|
2036
|
-
|
|
2037
|
-
|
|
2038
|
-
|
|
2039
|
-
|
|
2040
|
-
|
|
2041
|
-
|
|
2121
|
+
type OaaDescription = {
|
|
2122
|
+
ready: boolean;
|
|
2123
|
+
url?: string;
|
|
2124
|
+
providerId?: string;
|
|
2125
|
+
datasourceId?: string;
|
|
2126
|
+
applicationName?: string;
|
|
2127
|
+
applicationType?: string;
|
|
2128
|
+
population?: Record<string, string>;
|
|
2129
|
+
fullSync: boolean;
|
|
2042
2130
|
};
|
|
2043
|
-
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
|
|
2047
|
-
|
|
2048
|
-
|
|
2049
|
-
|
|
2050
|
-
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
|
|
2054
|
-
|
|
2131
|
+
type AuthzDescription = ModuleDescriptionBase<"authz"> & {
|
|
2132
|
+
trustedProvisioningClients: Array<{
|
|
2133
|
+
issuer: string;
|
|
2134
|
+
audience: string | string[];
|
|
2135
|
+
clientId: string;
|
|
2136
|
+
permissions: string[];
|
|
2137
|
+
}>;
|
|
2138
|
+
oaa?: OaaDescription;
|
|
2139
|
+
stores: {
|
|
2140
|
+
accessStore: boolean;
|
|
2141
|
+
accessIndex: boolean;
|
|
2142
|
+
catalogStore: boolean;
|
|
2143
|
+
resources: boolean;
|
|
2144
|
+
};
|
|
2055
2145
|
};
|
|
2056
|
-
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
|
|
2146
|
+
type TmDescription = ModuleDescriptionBase<"tm"> & {
|
|
2147
|
+
enabled: boolean;
|
|
2148
|
+
integrator?: {
|
|
2149
|
+
id: string;
|
|
2150
|
+
name?: string;
|
|
2151
|
+
url: string;
|
|
2152
|
+
issuer: string;
|
|
2153
|
+
jwksUri: string;
|
|
2154
|
+
audience: string;
|
|
2155
|
+
clientId: string;
|
|
2156
|
+
};
|
|
2157
|
+
consentTtlSeconds?: number;
|
|
2158
|
+
maxRedeemAttempts?: number;
|
|
2159
|
+
};
|
|
2160
|
+
type ModuleDescription = SsoDescription | CiamDescription | IamDescription | WorkloadDescription | SecretsDescription | KmsDescription | OtelDescription | AuthzDescription | TmDescription;
|
|
2161
|
+
type IoniteDescription = {
|
|
2162
|
+
id?: string;
|
|
2163
|
+
sdk: {
|
|
2164
|
+
version: string;
|
|
2165
|
+
catalogVersion: number;
|
|
2166
|
+
};
|
|
2167
|
+
basePath: string;
|
|
2168
|
+
urls: CapabilityEndpointUrls;
|
|
2169
|
+
ok: boolean;
|
|
2170
|
+
applied: boolean;
|
|
2171
|
+
config: ConfigApplyStatus;
|
|
2172
|
+
modules: Record<ModuleName, ModuleReadinessState & {
|
|
2173
|
+
description?: ModuleDescription;
|
|
2174
|
+
}>;
|
|
2061
2175
|
};
|
|
2062
|
-
/**
|
|
2063
|
-
* Projects observed runtime mutations to the configured IAM delta destination. The invariant is:
|
|
2064
|
-
* every runtime mutation the SDK observes that would change what IAM full sync shows must also
|
|
2065
|
-
* egress through this handle. That includes users, materialized entitlement definitions, and access
|
|
2066
|
-
* roots. Code templates are not pushed during config apply.
|
|
2067
|
-
*
|
|
2068
|
-
* Request-triggered methods resolve when projection completes (or immediately when not ready). They
|
|
2069
|
-
* are best-effort egress: the SCIM mutation path awaits them inside the request, but a rejection is
|
|
2070
|
-
* caught and reported as degraded egress — it never turns a committed store mutation into a SCIM
|
|
2071
|
-
* error. Reactive catalog/resource events use the same methods outside a request and warn on failure.
|
|
2072
|
-
*
|
|
2073
|
-
* Readiness follows the shared contract: `isReady()` is a synchronous check; `ready(timeout?)`
|
|
2074
|
-
* resolves once the emitter first becomes usable.
|
|
2075
|
-
*/
|
|
2076
|
-
interface IamDeltaEmitter {
|
|
2077
|
-
/** Upsert a full SCIM User representation at the destination. */
|
|
2078
|
-
onUserUpsert(user: BaseUser): Promise<void>;
|
|
2079
|
-
/** Delete a destination User identified strictly by externalId. */
|
|
2080
|
-
onUserDelete(externalId: string): Promise<void>;
|
|
2081
|
-
/** Upsert a full AppDev-projected SCIM Workload representation at the destination. */
|
|
2082
|
-
onWorkloadUpsert(workload: BaseWorkloadIdentity): Promise<void>;
|
|
2083
|
-
/** Delete a destination Workload identified by externalId (falling back to its App-owned id). */
|
|
2084
|
-
onWorkloadDelete(externalId: string): Promise<void>;
|
|
2085
|
-
/** Upsert a full AppDev-projected SCIM Customer representation at the destination. */
|
|
2086
|
-
onCustomerUpsert(customer: BaseCustomer): Promise<void>;
|
|
2087
|
-
/** Delete a destination Customer identified by externalId (falling back to its App-owned id). */
|
|
2088
|
-
onCustomerDelete(externalId: string): Promise<void>;
|
|
2089
|
-
/** Upsert a full SCIM Group representation for a group, role, or permission definition. */
|
|
2090
|
-
onEntitlementUpsert(entity: Entitlement, type: EntitlementType): Promise<void>;
|
|
2091
|
-
/** Delete a destination entitlement Group identified by the App-owned catalog id. */
|
|
2092
|
-
onEntitlementDelete(type: EntitlementType, id: string): Promise<void>;
|
|
2093
|
-
/** Project a granted root; resolves on completion (or immediately when not ready), rejects on push failure. */
|
|
2094
|
-
onGrant(change: AccessChange): Promise<void>;
|
|
2095
|
-
/** Project a revoked root; resolves on completion (or immediately when not ready), rejects on push failure. */
|
|
2096
|
-
onRevoke(change: AccessChange): Promise<void>;
|
|
2097
|
-
/** Re-push the complete IAM-visible snapshot to the destination (app-driven full reconcile). */
|
|
2098
|
-
reconcile(input: IamDeltaReconcileInput): Promise<IamDeltaReconcileResult>;
|
|
2099
|
-
/**
|
|
2100
|
-
* Submit an on-behalf access request at `${iam.url}/AccessRequests`. Requires only the
|
|
2101
|
-
* destination channel (`url` plus the `deltaAudience` workload client) — not `isReady()`, which
|
|
2102
|
-
* additionally demands delta egress (a per-kind `'patch'` mode and its receipt stores). A tenant
|
|
2103
|
-
* whose IAM aggregates by pull alone may still submit requests.
|
|
2104
|
-
*/
|
|
2105
|
-
requestAccess(input: AccessRequestCreate): Promise<AccessRequestResult>;
|
|
2106
|
-
/**
|
|
2107
|
-
* Read a previously captured destination reference without making a network request. Returns
|
|
2108
|
-
* undefined until the resource has been resolved or pushed to the configured IAM destination.
|
|
2109
|
-
* `correlationId` is a User's `externalId` or an entitlement's App-owned catalog `id`.
|
|
2110
|
-
*/
|
|
2111
|
-
getDestinationRef(resourceType: IamDeltaResourceType, correlationId: string): Promise<DestinationReference | undefined>;
|
|
2112
|
-
isReady(): boolean;
|
|
2113
|
-
ready(timeout?: number): Promise<void>;
|
|
2114
|
-
}
|
|
2115
2176
|
import { StandardSchemaV1 as StandardSchemaV14 } from "@standard-schema/spec";
|
|
2116
2177
|
/**
|
|
2117
2178
|
* Token caching for workload identity authentication.
|
|
@@ -2303,12 +2364,10 @@ type WorkloadConfigBase = {
|
|
|
2303
2364
|
*/
|
|
2304
2365
|
audience?: string;
|
|
2305
2366
|
/**
|
|
2306
|
-
* Per-IdP intent (incoming/server role only):
|
|
2307
|
-
*
|
|
2308
|
-
* helpers (audience-bound). Mirrors `RemoteConfig.authz.scopesAsEntitlements` but scoped to a single
|
|
2309
|
-
* trusted IdP so first-party scopes can be honored while federated/third-party ones are not.
|
|
2367
|
+
* Per-IdP intent (incoming/server role only): token claims from THIS trust anchor may satisfy
|
|
2368
|
+
* `has*` (audience-bound). ConfigSource-only. There is no global fallback.
|
|
2310
2369
|
*/
|
|
2311
|
-
|
|
2370
|
+
claimsAsEntitlements?: ClaimsAsEntitlements;
|
|
2312
2371
|
/**
|
|
2313
2372
|
* Default OAuth2 scopes (space-delimited)
|
|
2314
2373
|
*/
|
|
@@ -2484,8 +2543,8 @@ type TrustedIdp = {
|
|
|
2484
2543
|
* one of these values (with `azp` fallback). REQUIRED: prevents cross-app token reuse.
|
|
2485
2544
|
*/
|
|
2486
2545
|
audience: string | string[];
|
|
2487
|
-
/** Per-IdP
|
|
2488
|
-
|
|
2546
|
+
/** Per-IdP claims intent (see {@link WorkloadConfigBase.claimsAsEntitlements}). */
|
|
2547
|
+
claimsAsEntitlements?: ClaimsAsEntitlements;
|
|
2489
2548
|
};
|
|
2490
2549
|
/**
|
|
2491
2550
|
* Workload config with separate incoming (server) and outgoing (client) roles.
|
|
@@ -2720,6 +2779,7 @@ type IAMAccessRequestsConfig = {
|
|
|
2720
2779
|
request: AccessRequestResult;
|
|
2721
2780
|
created: boolean;
|
|
2722
2781
|
}>;
|
|
2782
|
+
get?: (id: string) => Promise<AccessRequestResult | undefined>;
|
|
2723
2783
|
};
|
|
2724
2784
|
type IAMEntitlementRequestUrlContext = {
|
|
2725
2785
|
request: Request;
|
|
@@ -3301,6 +3361,12 @@ type Session<TExtended = object> = {
|
|
|
3301
3361
|
*/
|
|
3302
3362
|
claims?: Record<string, unknown>;
|
|
3303
3363
|
/**
|
|
3364
|
+
* Entitlements derived from token claims at login and refresh. Session-scoped: they die with the
|
|
3365
|
+
* record (TTL, rotation, back-channel logout) and are never written to the access stores.
|
|
3366
|
+
* Only meaningful when the store declares {@link SessionStoreCapabilities.derivedEntitlements}.
|
|
3367
|
+
*/
|
|
3368
|
+
entitlements?: DerivedEntitlement[];
|
|
3369
|
+
/**
|
|
3304
3370
|
* Optional access-token claims for modules that keep access/id claims separate.
|
|
3305
3371
|
*/
|
|
3306
3372
|
accessClaims?: Record<string, unknown>;
|
|
@@ -3337,7 +3403,21 @@ type Session<TExtended = object> = {
|
|
|
3337
3403
|
* }
|
|
3338
3404
|
* ```
|
|
3339
3405
|
*/
|
|
3406
|
+
/**
|
|
3407
|
+
* Store-declared capabilities. The SDK does not probe a custom store (a write at init is forbidden);
|
|
3408
|
+
* a store that omits the declaration is treated as incapable.
|
|
3409
|
+
*/
|
|
3410
|
+
type SessionStoreCapabilities = {
|
|
3411
|
+
/**
|
|
3412
|
+
* The store persists {@link Session.entitlements} round-trip. JSON-backed stores (the SDK Redis
|
|
3413
|
+
* and in-memory implementations) declare this. A column-mapped SQL store declares it only after
|
|
3414
|
+
* it has a column for the derived set.
|
|
3415
|
+
*/
|
|
3416
|
+
derivedEntitlements?: boolean;
|
|
3417
|
+
};
|
|
3340
3418
|
interface SessionStore<TExtended = object> {
|
|
3419
|
+
/** Declaration of what this store persists beyond the required session fields. */
|
|
3420
|
+
readonly capabilities?: SessionStoreCapabilities;
|
|
3341
3421
|
/**
|
|
3342
3422
|
* Create a new session in the store.
|
|
3343
3423
|
*
|
|
@@ -3670,6 +3750,13 @@ type SSOConfig<
|
|
|
3670
3750
|
*/
|
|
3671
3751
|
userStore?: UserStore<TUserData>;
|
|
3672
3752
|
/**
|
|
3753
|
+
* ConfigSource-only. When set, the named token claims are derived into session-scoped
|
|
3754
|
+
* entitlements at login and refresh. Never set from application code.
|
|
3755
|
+
*/
|
|
3756
|
+
claimsAsEntitlements?: ClaimsAsEntitlements;
|
|
3757
|
+
/** ConfigSource-only IdP assignment workflow used when IAM assignment is `'idp'`. */
|
|
3758
|
+
accessRequests?: AccessRequestsDestination;
|
|
3759
|
+
/**
|
|
3673
3760
|
* Enable Just-In-Time (JIT) user provisioning.
|
|
3674
3761
|
* When enabled, new users are automatically created in the userStore on their first login.
|
|
3675
3762
|
* When disabled (default), only existing users in the userStore are updated on login.
|
|
@@ -4585,17 +4672,6 @@ type TrustedProvisioningClient = {
|
|
|
4585
4672
|
type AuthzConfig = {
|
|
4586
4673
|
oaa?: AuthzOaaConfig;
|
|
4587
4674
|
/**
|
|
4588
|
-
* RemoteConfig/Ops-governed intent. When `true`, the request-level `has*` helpers auto-honor a
|
|
4589
|
-
* principal's OAuth token `scope` claims as entitlements: an app-wide check (no `resource` arg)
|
|
4590
|
-
* also allows when the target id matches a granted scope. Default `false` (secure): scopes never
|
|
4591
|
-
* satisfy `has*` and authorization comes solely from the `AccessAssignmentStore`/`AccessIndex` (IAM/SCIM).
|
|
4592
|
-
* Read at check time so it can be flipped live. This NEVER affects token validation, and the
|
|
4593
|
-
* explicit `hasScope*` helpers are always available regardless of this flag. Resource-scoped
|
|
4594
|
-
* checks (a `resource` arg supplied) are never satisfied by scopes. For workload principals this is
|
|
4595
|
-
* a fallback only: a matched trusted IdP's per-entry `scopesAsEntitlements` takes precedence.
|
|
4596
|
-
*/
|
|
4597
|
-
scopesAsEntitlements?: boolean;
|
|
4598
|
-
/**
|
|
4599
4675
|
* Config-declared trusted provisioning clients (read-path overlay; ConfigSource/ECI-owned). Each
|
|
4600
4676
|
* entry pre-authorizes a workload client to hold specific permissions without a stored grant. See
|
|
4601
4677
|
* {@link TrustedProvisioningClient}. Honored in the request-level `has*` helpers BEFORE the
|
|
@@ -4676,11 +4752,11 @@ type FrameworkConfig = {
|
|
|
4676
4752
|
* `afterLogout` callbacks, which are code-only and therefore kept. RemoteConfig-only intent flags (e.g. IAM `users`/`groups`
|
|
4677
4753
|
* enablement) are also stripped from code.
|
|
4678
4754
|
*/
|
|
4679
|
-
type SSOConfigFromCode = Omit<SSOConfig, "loginUrl" | "userUrl" | "logoutUrl" | "logoutBackChannelUrl" | "refreshUrl" | "redirectUri">;
|
|
4755
|
+
type SSOConfigFromCode = Omit<SSOConfig, "loginUrl" | "userUrl" | "logoutUrl" | "logoutBackChannelUrl" | "refreshUrl" | "redirectUri" | "claimsAsEntitlements" | "accessRequests">;
|
|
4680
4756
|
type IAMConfigFromCode = Omit<IAMConfig, "usersUrl" | "groupsUrl" | "workloadsUrl" | "customersUrl" | "users" | "workloads" | "customers" | "groups" | "discovery" | "deltaAudience"> & {
|
|
4681
4757
|
discovery?: Omit<IAMDiscoveryConfig, "basePath">;
|
|
4682
4758
|
};
|
|
4683
|
-
type WorkloadServerConfigFromCode = Omit<Partial<WorkloadConfig>, "tokenUrl" | "validateUrl" | "jwksUrl" | "refreshUrl">;
|
|
4759
|
+
type WorkloadServerConfigFromCode = Omit<Partial<WorkloadConfig>, "tokenUrl" | "validateUrl" | "jwksUrl" | "refreshUrl" | "claimsAsEntitlements">;
|
|
4684
4760
|
type FrameworkWorkloadConfigFromCode = WorkloadServerConfigFromCode | {
|
|
4685
4761
|
incoming?: WorkloadServerConfigFromCode;
|
|
4686
4762
|
outgoing?: FrameworkWorkloadIncomingOutgoing["outgoing"];
|
|
@@ -5273,8 +5349,8 @@ type ResolvedRoute = {
|
|
|
5273
5349
|
/**
|
|
5274
5350
|
* Authorization required to invoke this route. When set, the router enforces it (deny-by-default)
|
|
5275
5351
|
* before the handler runs: the caller must hold the {@link EndpointPermission.permission} as a
|
|
5276
|
-
* granted entitlement, or
|
|
5277
|
-
*
|
|
5352
|
+
* granted entitlement, or a claim-derived entitlement from the issuing IdP's `claimsAsEntitlements`
|
|
5353
|
+
* block. Login/public/discovery routes omit it.
|
|
5278
5354
|
*
|
|
5279
5355
|
* Three states, chosen so a custom `resolve` cannot silently drop authorization by omission:
|
|
5280
5356
|
* - a permission object → enforce it;
|
|
@@ -6415,9 +6491,9 @@ type Authz = {
|
|
|
6415
6491
|
*/
|
|
6416
6492
|
grant(change: AccessChange): Promise<AccessChange>;
|
|
6417
6493
|
/**
|
|
6418
|
-
* Submit one grant or revoke request on a principal's behalf.
|
|
6419
|
-
*
|
|
6420
|
-
*
|
|
6494
|
+
* Submit one grant or revoke request on a principal's behalf. Under `'iam-request'`, targets the
|
|
6495
|
+
* IAM destination; under `'idp'`, targets the claims-bearing SSO/CIAM provider. One operation
|
|
6496
|
+
* maps to one approval decision, status, and tracking URL.
|
|
6421
6497
|
*/
|
|
6422
6498
|
requestAccess(change: {
|
|
6423
6499
|
subject: AccessChange["subject"];
|
|
@@ -6426,6 +6502,20 @@ type Authz = {
|
|
|
6426
6502
|
target: AccessChange["target"];
|
|
6427
6503
|
operation: "grant" | "revoke";
|
|
6428
6504
|
justification?: string;
|
|
6505
|
+
/** CIAM provider key. Required only when multiple providers expose an AccessRequests channel. */
|
|
6506
|
+
provider?: string;
|
|
6507
|
+
}): Promise<{
|
|
6508
|
+
id: string;
|
|
6509
|
+
status: "pending" | "approved" | "denied";
|
|
6510
|
+
operation: "grant" | "revoke";
|
|
6511
|
+
trackingUrl: string;
|
|
6512
|
+
}>;
|
|
6513
|
+
/** Read the destination-owned state of an on-behalf access request. */
|
|
6514
|
+
getAccessRequest(input: {
|
|
6515
|
+
id: string;
|
|
6516
|
+
subjectType: SubjectType;
|
|
6517
|
+
/** CIAM provider key. Required only when multiple providers expose an AccessRequests channel. */
|
|
6518
|
+
provider?: string;
|
|
6429
6519
|
}): Promise<{
|
|
6430
6520
|
id: string;
|
|
6431
6521
|
status: "pending" | "approved" | "denied";
|
|
@@ -6445,8 +6535,10 @@ type Authz = {
|
|
|
6445
6535
|
* - `'iam'` — never assign in-app; show a request link (or a read-only entitlement table).
|
|
6446
6536
|
* - `'iam-request'` — never assign in-app; the app submits a request on the principal's behalf via
|
|
6447
6537
|
* {@link Authz.requestAccess}.
|
|
6538
|
+
* - `'idp'` — the claims-bearing SSO/CIAM provider is assigner of record; requests use that
|
|
6539
|
+
* provider's ConfigSource-owned AccessRequests channel.
|
|
6448
6540
|
*/
|
|
6449
|
-
type IamAssignmentPolicy = "app" | "iam" | "iam-request";
|
|
6541
|
+
type IamAssignmentPolicy = "app" | "iam" | "iam-request" | "idp";
|
|
6450
6542
|
/**
|
|
6451
6543
|
* Thrown by {@link Authz.grant} when the Ops-owned assignment policy forbids in-app assignment.
|
|
6452
6544
|
* `requestUrl` is the IAM-written entitlement receipt when one exists, so the app can send the
|
|
@@ -6865,4 +6957,4 @@ type LfvErrorResponse = {
|
|
|
6865
6957
|
};
|
|
6866
6958
|
/** Generates a ULID */
|
|
6867
6959
|
declare function generateULID(prefix?: string): string;
|
|
6868
|
-
export { ACCEPT_JSON, ACCEPT_OCTET_STREAM, ACCEPT_SCIM, ACCEPT_XML, AccessAssignmentStore, AccessCatalogStore, AccessChange, AccessCheckReason, AccessCheckResult, AccessCheckTarget, AccessIndex, AccessMutationResult, AccessMutationStatus, AccessProvenance, AccessRef, AccessRequestCreate, AccessRequestResult, AccessStatus, Address, ApplicationValidators, AssignmentPolicyError, AuthenticatedPrincipal, AuthenticatedUser, Authz, AuthzConfig, AuthzDecision, AuthzDescription, AuthzEntityBase, AuthzOaaConfig, AuthzOaaPrincipalConfig, AuthzScimGroupExtension, AuthzScimGroupType, AwsConfigLocator, AwsSecretsConfig, AzureAuthMethod, AzureConfigLocator, AzureSecretsConfig, BaseCustomer, BaseTenant, BaseUser, BaseWorkloadIdentity, CANONICAL_RISK_LEVELS, CIAM, CIAMConfig, CIAMConfigFromCode, CIAMConfigFromCodeInput, CIAMProviderBranding, CIAMProviderColors, CIAMProviderConfig, CIAMProviderDescriptor, CIAMProviderType, CIAMValidators, CONTENT_TYPE_FORM, CONTENT_TYPE_JSON, CONTENT_TYPE_OCTET_STREAM, CONTENT_TYPE_SCIM, CONTENT_TYPE_XML, CacheConfig, CachedWorkloadToken, CapabilitiezManifest, CapabilityEndpointUrls, CapabilityKey, CapabilityState, CatalogChange, CatalogChangeKind, CatalogChangeListener, CatalogEntityKind, ChangeListener, CiamDescription, CiamProviderDescription, ClientCredentialsWorkloadConfig, CodeCatalog, CodeCatalogInput, CodeCatalogNamespace, ConfigApplyStatus, ConfigChangeCallback, ConfigChangeOptions, ConfigChangeResult, ConfigErrorKind, ConfigExportEnvelope, ConfigLocator, ConfigSource, ConfigSourceEnv, ConfigSourceError, ConfigSourceErrorInit, ConfigSourceResolver, ConfigSourceType, ConfigSubscriptionOptions, ConnectRequestContext, CookieDescription, CreateGroupOptions, CreateTenantRequest, CreateUserOptions, Customer, CustomerStore, CustomerStoreOptions, DEFAULT_DISCOVERED_COOKIE_MAX, DEFAULT_DISCOVERED_COOKIE_TTL_SECONDS, DEFAULT_DISPLAY_COOKIE_MAX, DEFAULT_RISK_LEVEL, DEFAULT_SECRET_MIME_TYPES, DEFAULT_TENANT_API_NAMESPACE, DEFAULT_TENANT_UI_NAMESPACE, DISCOVERED_COOKIE_PREFIX, DISPLAY_COOKIE_SUFFIX, DISPLAY_COOKIE_VERSION, DescribedSecretsSource, DestinationReference, DevSecretsConfig, DiscoveredDisplayCookieConfig, DisplayAuthType, DisplayCookieConfig, DisplayCookieEnvelope, DisplayIdentity, DisplayUser, ECID_SCHEME, EcidFormatError, EffectiveEdge, EgressChannelOutcome, EgressOutcome, Email, EndpointOperation, EndpointPermission, EnterpriseExtension, Entitlement, EntitlementType, EntityStore, EnvironmentType, FORM_MEDIA_TYPE, FrameworkConfig, FrameworkConfigInput, FrameworkLfvConfig, FrameworkOtelConfig, FrameworkSecretsModuleConfig, FrameworkSecretsSourceConfig, FrameworkStores, FrameworkTmConfig, FrameworkWorkloadConfig, FrameworkWorkloadConfigFromCode, FrameworkWorkloadIncomingOutgoing, GcpConfigLocator, GcpSecretsConfig, Group, GroupMember, GroupResource, GroupsInboundHandlerConfig, IAM, IAMAccessRequestsConfig, IAMAppRegistry, IAMAppValidators, IAMConfig, IAMConfigFromCode, IAMDiscoveryConfig, IAMDiscoveryContext, IAMDiscoveryHandlerConfig, IAMEndpointFlag, IAMGroupsInbound, IAMGroupsOutbound, IAMHandlerConfig, IAMInboundCustomersConfig, IAMInboundPrincipalContext, IAMInboundUserContext, IAMInboundUsersConfig, IAMInboundWorkloadsConfig, IAMPrincipalsInbound, IAMUsersInbound, IAMValidators, ION_AUTHZ_GROUP_SCHEMA, ION_AUTHZ_OAA_SYNC, ION_CAPABILITIEZ_READ, ION_CIAM_MAGIC_LINK_CREATE, ION_ENDPOINT_PERMISSIONS, ION_IAM_ACCESS_REQUESTS_WRITE, ION_IAM_CUSTOMERS_WRITE, ION_IAM_GROUPS_WRITE, ION_IAM_READ, ION_IAM_USERS_WRITE, ION_IAM_WORKLOADS_WRITE, ION_SCIM_CUSTOMER_SCHEMA, ION_SCIM_USER_EXTENSION_URN, ION_SCIM_WORKLOAD_SCHEMA, ION_SDK_PERMISSIONS, ION_TENANT_MANAGE, IamAssignmentPolicy, IamDeltaEmitter, IamDeltaMode, IamDeltaReconcileInput, IamDeltaReconcileResult, IamDeltaResourceType, IamDescription, IamPrincipalDescription, IamPrincipalKind, IamPrincipalKindFlag, IdTokenClaims, IdentityResolution, InMemoryTenantStoreOptions, InferSecretType, Ionite, IoniteBase, IoniteDescription, IoniteError, IoniteErrorOptions, IoniteUserExtension, IoniteValidators, JSON_MEDIA_TYPE, JWTAssertionClaims, JwtBearerWorkloadConfig, KNOWN_BASE_CUSTOMER_KEYS, KNOWN_BASE_USER_KEYS, KNOWN_ENTITLEMENT_KEYS, KNOWN_WORKLOAD_KEYS, Kms, KmsAddKeysRequest, KmsAddKeysResult, KmsAllocationPolicy, KmsAllocationStrategy, KmsConfig, KmsDescription, KmsIssuedKey, KmsIssuerEvent, KmsIssuerEventListener, KmsIssuerEventName, KmsKey, KmsKeyState, KmsParkDisposition, KmsParkReport, KmsParkRequest, KmsParkResult, KmsPool, KmsPoolConfig, KmsPoolControlDocument, KmsPoolDescription, KmsPoolDocument, KmsPoolIssuer, KmsPoolListener, KmsPoolSlot, KmsRevokeKeyRequest, KmsRevokeKeyResult, LfvActionAcceptedResponse, LfvActionName, LfvActionRequestBase, LfvCallbackEnvelope, LfvCallbackHeaders, LfvCallbackKind, LfvCallbackTransport, LfvEd25519PrivateJwk, LfvEd25519PublicJwk, LfvErrorCode, LfvErrorResponse, LfvJwks, LfvOtpRequest, LfvOtpResponse, ListFilter, ListOptions, ListResult, Logger, MagicLink, MagicLinkStore, MetaData, MirrorConfigLocator, ModifiableFrameworkConfig, ModuleDescription, ModuleDescriptionBase, ModuleName, ModuleReadiness, ModuleReadinessState, Name, NoReserved, OCTET_STREAM_MEDIA_TYPE, OaaAccessChangeBatchItem, OaaAccessTargetType, OaaClient, OaaDescription, OaaPrincipalPopulation, OaaSyncInput, OaaSyncOptions, OaaSyncResult, OidcCallbackParams, Otel, OtelAttributeValue, OtelAttributes, OtelConfig, OtelConsoleMode, OtelDescription, OtelLevels, OtelLogLevel, OtelLogRecord, OtelMetricsSignalConfig, OtelOAuthClientCredentialsConfig, OtelProtocol, OtelProviderType, OtelSignalConfig, OtelSignalDescription, OtelSignalName, PLATFORM_ASSIGNABLE_SUBJECT_TYPES, ParsedEcid, Permission, PhoneNumber, Photo, PrincipalInboundHandlerConfig, ReactiveHandle, ReadJsonResponseOptions, ReadinessReport, ReadyAccessCatalogEntry, ReadyzEndpointConfig, ReconcileReport, RecordTenantConsentInput, RegisterIAMAppError, RegisterIAMAppPayload, RegisterIAMAppResult, RegisterSSOAppError, RegisterSSOAppPayload, RegisterSSOAppResult, RemoteConfig, RemoteConfigLoadErrorKind, RemoteConfigRetryContext, RemoteConfigRetryHook, RemoteConfigRetryOptions, RemoteTmConfig, RequireReadyResult, ResolvedRoute, ResolvedVaultLfvSecretsConfig, Resource, ResourceChange, ResourceChangeListener, ResourceProvider, RiskLevel, Role, RouteFilterResult, RouteModule, RoutingOptions, SCIM_MEDIA_TYPE, SSO, SSOAppRegistry, SSOAppValidators, SSOConfig, SSOConfigFromCode, SSOHandlerConfig, SSOValidators, ScimAuthenticationScheme, ScimCustomer, ScimError, Group2 as ScimGroup, ScimListResponse, ScimMutationSummary, ScimResourceType, ScimResourceTypeSchemaExtension, ScimResult, Role2 as ScimRole, ScimSchemaAttributeDefinition, ScimSchemaDefinition, ScimServiceProviderConfig, User as ScimUser, ScimWorkload, Secret, SecretContentType, SecretContentTypeMismatchError, SecretEvent, SecretEventListener, SecretEventName, SecretFormat, SecretHandle, SecretLifecycleRequest, SecretRequestSeverity, SecretTypeDescriptor, SecretTypeInput, SecretTypeRegistryEntry, Secrets, SecretsDescription, SecretsModuleConfig, SecretsOperationOptions, SecretsSource, SecretsSourceConfig, SecretsSourceDescription, SecretsSourceMap, SecretsSourceType, SecretsSubscriptionOptions, SecretsValidators, SecretsWriteOptions, ServerOnlyWorkloadConfig, Session, SessionStore, SetTenantIntegrationOptions, SsoDescription, StagedIntegration, StandardSchemaWithValidate, StateCookie, StoreConflictError, StoreConflictKind, SubjectRef, SubjectScope, SubjectType, SubjectTypeScoping, SubscriptionMode, TenantDirectory, TenantDirectoryIdentity, TenantHostMatch, TenantHostRoutingStrategy, TenantIntegration, TenantIntegrationStatus, TenantIntegrationView, TenantIonCache, TenantManagement, TenantPathMatch, TenantPathNamespace, TenantPathRoutingStrategy, TenantResponse, TenantRoutingStrategy, TenantSelectorRoutingStrategy, TenantStatus, TenantStore, TenantValidators, TenantWebhookPayload, TmDescription, TmIntegratorConfig, TokenResponse, TokenValidationResult, TrustedIdp, TrustedProvisioningClient, UnexpectedBodySummary, UpdateTenantRequest, UserEndpointPolicy, UserStore, UserStoreOptions, UsersInboundHandlerConfig, ValidateResult, VaultConfigLocator, VaultLfvSecretsConfig, VaultSecretsConfig, VaultWebSocketAuthHeader, VaultWebSocketSecretsConfig, VaultWorkloadAuthConfig, WorkforceUser, Workload, WorkloadClient, WorkloadClientDescription, WorkloadConfig, WorkloadConfigMap, WorkloadDescription, WorkloadGetToken, WorkloadIdentity, WorkloadIdentityStore, WorkloadIncomingOutgoing, WorkloadPrincipal, WorkloadTokenResponse, WorkloadTokenStore, WorkloadTrustedIdpDescription, WorkloadValidators, X509Certificate, XML_MEDIA_TYPE, accessRefId, accessRootId, assertEcid, assertRequiredSubjectType, assertValidSubjectTypeScoping, buildTenantPath, buildTenantUrl, catalogEntityStore, claimsToUser, compareDisplayExpiryDesc, configTrustedClientGrants, customAttributes, customerResourceSchema, debugLogger, decodeDisplayCookie, decodeUser, deepEqualPlain, defaultDisplayUser, defaultLogger, defaultSecretContentType, defineCatalog, defineSecretType, deprecateRetiredCodeCatalogRows, discoveredProfileCookieName, encodeDisplayCookie, formatEcid, formatLogLine, generateULID, getCodeCatalogEntity, groupResourceSchema, idTokenClaimsSchema, infoLogger, isCodeCatalog, isConfigLocator, isConfigSourceError, isEcid, isJsonResponse, isStoreConflictError, jwtAssertionClaimsSchema, list, listGenerator, matchTenantHost, matchTenantPath, matchesListFilter, materializeCodeCatalogEntity, mergeCodeCatalogEntity, mergeConfig, must, normalizeTenantBaseDomain, normalizeTenantPathNamespace, normalizeTenantRoutingStrategy, oidcCallbackSchema, parseEcid, parseJsonc, parseKmsPoolControlDocument, parseKmsPoolDocument, prettyLogger, profileCookieName, projectDisplayUser, readDisplayCookies, readJsonResponse, readyCatalogEntry, remoteConfigSecretType, resolveDiscoveredCookieMax, resolveDiscoveredCookieTtlSeconds, resolveDisplayCookieMax, sanitizeDisplayUser, serializeConfig, silentLogger, stableConfigHash, stripJsonComments, tmIntegrationState, toCodeCatalog, tokenResponseSchema, trimTrailingSlash, trustedClientPermissionsForPrincipal, unexpectedBodySummary, unionCatalogRead, userSchema, validationFailureResponse, version, waitOn, warnLogger, withValidate, workloadResourceSchema, workloadTokenResponseSchema };
|
|
6960
|
+
export { ACCEPT_JSON, ACCEPT_OCTET_STREAM, ACCEPT_SCIM, ACCEPT_XML, AccessAssignmentStore, AccessCatalogStore, AccessChange, AccessCheckReason, AccessCheckResult, AccessCheckTarget, AccessIndex, AccessMutationResult, AccessMutationStatus, AccessProvenance, AccessRef, AccessRequestCreate, AccessRequestResult, AccessRequestsDestination, AccessStatus, Address, ApplicationValidators, AssignmentPolicyError, AuthenticatedPrincipal, AuthenticatedUser, Authz, AuthzConfig, AuthzDecision, AuthzDescription, AuthzEntityBase, AuthzOaaConfig, AuthzOaaPrincipalConfig, AuthzScimGroupExtension, AuthzScimGroupType, AwsConfigLocator, AwsSecretsConfig, AzureAuthMethod, AzureConfigLocator, AzureSecretsConfig, BaseCustomer, BaseTenant, BaseUser, BaseWorkloadIdentity, CANONICAL_RISK_LEVELS, CIAM, CIAMConfig, CIAMConfigFromCode, CIAMConfigFromCodeInput, CIAMProviderBranding, CIAMProviderColors, CIAMProviderConfig, CIAMProviderDescriptor, CIAMProviderType, CIAMValidators, CONTENT_TYPE_FORM, CONTENT_TYPE_JSON, CONTENT_TYPE_OCTET_STREAM, CONTENT_TYPE_SCIM, CONTENT_TYPE_XML, CacheConfig, CachedWorkloadToken, CapabilitiezManifest, CapabilityEndpointUrls, CapabilityKey, CapabilityState, CatalogChange, CatalogChangeKind, CatalogChangeListener, CatalogEntityKind, ChangeListener, CiamDescription, CiamProviderDescription, ClaimsAsEntitlements, ClaimsAsEntitlementsDescription, ClientCredentialsWorkloadConfig, CodeCatalog, CodeCatalogInput, CodeCatalogNamespace, ConfigApplyStatus, ConfigChangeCallback, ConfigChangeOptions, ConfigChangeResult, ConfigErrorKind, ConfigExportEnvelope, ConfigLocator, ConfigSource, ConfigSourceEnv, ConfigSourceError, ConfigSourceErrorInit, ConfigSourceResolver, ConfigSourceType, ConfigSubscriptionOptions, ConnectRequestContext, CookieDescription, CreateGroupOptions, CreateTenantRequest, CreateUserOptions, Customer, CustomerStore, CustomerStoreOptions, DEFAULT_DISCOVERED_COOKIE_MAX, DEFAULT_DISCOVERED_COOKIE_TTL_SECONDS, DEFAULT_DISPLAY_COOKIE_MAX, DEFAULT_RISK_LEVEL, DEFAULT_SECRET_MIME_TYPES, DEFAULT_TENANT_API_NAMESPACE, DEFAULT_TENANT_UI_NAMESPACE, DISCOVERED_COOKIE_PREFIX, DISPLAY_COOKIE_SUFFIX, DISPLAY_COOKIE_VERSION, DerivedEntitlement, DescribedSecretsSource, DestinationReference, DevSecretsConfig, DiscoveredDisplayCookieConfig, DisplayAuthType, DisplayCookieConfig, DisplayCookieEnvelope, DisplayIdentity, DisplayUser, ECID_SCHEME, EcidFormatError, EffectiveEdge, EgressChannelOutcome, EgressOutcome, Email, EndpointOperation, EndpointPermission, EnterpriseExtension, Entitlement, EntitlementType, EntityStore, EnvironmentType, FORM_MEDIA_TYPE, FrameworkConfig, FrameworkConfigInput, FrameworkLfvConfig, FrameworkOtelConfig, FrameworkSecretsModuleConfig, FrameworkSecretsSourceConfig, FrameworkStores, FrameworkTmConfig, FrameworkWorkloadConfig, FrameworkWorkloadConfigFromCode, FrameworkWorkloadIncomingOutgoing, GcpConfigLocator, GcpSecretsConfig, Group, GroupMember, GroupResource, GroupsInboundHandlerConfig, IAM, IAMAccessRequestsConfig, IAMAppRegistry, IAMAppValidators, IAMConfig, IAMConfigFromCode, IAMDiscoveryConfig, IAMDiscoveryContext, IAMDiscoveryHandlerConfig, IAMEndpointFlag, IAMGroupsInbound, IAMGroupsOutbound, IAMHandlerConfig, IAMInboundCustomersConfig, IAMInboundPrincipalContext, IAMInboundUserContext, IAMInboundUsersConfig, IAMInboundWorkloadsConfig, IAMPrincipalsInbound, IAMUsersInbound, IAMValidators, ION_AUTHZ_GROUP_SCHEMA, ION_AUTHZ_OAA_SYNC, ION_CAPABILITIEZ_READ, ION_CIAM_MAGIC_LINK_CREATE, ION_ENDPOINT_PERMISSIONS, ION_IAM_ACCESS_REQUESTS_WRITE, ION_IAM_CUSTOMERS_WRITE, ION_IAM_GROUPS_WRITE, ION_IAM_READ, ION_IAM_USERS_WRITE, ION_IAM_WORKLOADS_WRITE, ION_SCIM_CUSTOMER_SCHEMA, ION_SCIM_USER_EXTENSION_URN, ION_SCIM_WORKLOAD_SCHEMA, ION_SDK_PERMISSIONS, ION_TENANT_MANAGE, IamAssignmentPolicy, IamDeltaEmitter, IamDeltaMode, IamDeltaReconcileInput, IamDeltaReconcileResult, IamDeltaResourceType, IamDescription, IamPrincipalDescription, IamPrincipalKind, IamPrincipalKindFlag, IdTokenClaims, IdentityResolution, InMemoryTenantStoreOptions, InferSecretType, Ionite, IoniteBase, IoniteDescription, IoniteError, IoniteErrorOptions, IoniteUserExtension, IoniteValidators, JSON_MEDIA_TYPE, JWTAssertionClaims, JwtBearerWorkloadConfig, KNOWN_BASE_CUSTOMER_KEYS, KNOWN_BASE_USER_KEYS, KNOWN_ENTITLEMENT_KEYS, KNOWN_WORKLOAD_KEYS, Kms, KmsAddKeysRequest, KmsAddKeysResult, KmsAllocationPolicy, KmsAllocationStrategy, KmsConfig, KmsDescription, KmsIssuedKey, KmsIssuerEvent, KmsIssuerEventListener, KmsIssuerEventName, KmsKey, KmsKeyState, KmsParkDisposition, KmsParkReport, KmsParkRequest, KmsParkResult, KmsPool, KmsPoolConfig, KmsPoolControlDocument, KmsPoolDescription, KmsPoolDocument, KmsPoolIssuer, KmsPoolListener, KmsPoolSlot, KmsRevokeKeyRequest, KmsRevokeKeyResult, LfvActionAcceptedResponse, LfvActionName, LfvActionRequestBase, LfvCallbackEnvelope, LfvCallbackHeaders, LfvCallbackKind, LfvCallbackTransport, LfvEd25519PrivateJwk, LfvEd25519PublicJwk, LfvErrorCode, LfvErrorResponse, LfvJwks, LfvOtpRequest, LfvOtpResponse, ListFilter, ListOptions, ListResult, Logger, MagicLink, MagicLinkStore, MetaData, MirrorConfigLocator, ModifiableFrameworkConfig, ModuleDescription, ModuleDescriptionBase, ModuleName, ModuleReadiness, ModuleReadinessState, Name, NoReserved, OCTET_STREAM_MEDIA_TYPE, OaaAccessChangeBatchItem, OaaAccessTargetType, OaaClient, OaaDescription, OaaPrincipalPopulation, OaaSyncInput, OaaSyncOptions, OaaSyncResult, OidcCallbackParams, Otel, OtelAttributeValue, OtelAttributes, OtelConfig, OtelConsoleMode, OtelDescription, OtelLevels, OtelLogLevel, OtelLogRecord, OtelMetricsSignalConfig, OtelOAuthClientCredentialsConfig, OtelProtocol, OtelProviderType, OtelSignalConfig, OtelSignalDescription, OtelSignalName, PLATFORM_ASSIGNABLE_SUBJECT_TYPES, ParsedEcid, Permission, PhoneNumber, Photo, PrincipalInboundHandlerConfig, ReactiveHandle, ReadJsonResponseOptions, ReadinessReport, ReadyAccessCatalogEntry, ReadyzEndpointConfig, ReconcileReport, RecordTenantConsentInput, RegisterIAMAppError, RegisterIAMAppPayload, RegisterIAMAppResult, RegisterSSOAppError, RegisterSSOAppPayload, RegisterSSOAppResult, RemoteConfig, RemoteConfigLoadErrorKind, RemoteConfigRetryContext, RemoteConfigRetryHook, RemoteConfigRetryOptions, RemoteTmConfig, RequireReadyResult, ResolvedRoute, ResolvedVaultLfvSecretsConfig, Resource, ResourceChange, ResourceChangeListener, ResourceProvider, RiskLevel, Role, RouteFilterResult, RouteModule, RoutingOptions, SCIM_MEDIA_TYPE, SSO, SSOAppRegistry, SSOAppValidators, SSOConfig, SSOConfigFromCode, SSOHandlerConfig, SSOValidators, ScimAuthenticationScheme, ScimCustomer, ScimError, Group2 as ScimGroup, ScimListResponse, ScimMutationSummary, ScimResourceType, ScimResourceTypeSchemaExtension, ScimResult, Role2 as ScimRole, ScimSchemaAttributeDefinition, ScimSchemaDefinition, ScimServiceProviderConfig, User as ScimUser, ScimWorkload, Secret, SecretContentType, SecretContentTypeMismatchError, SecretEvent, SecretEventListener, SecretEventName, SecretFormat, SecretHandle, SecretLifecycleRequest, SecretRequestSeverity, SecretTypeDescriptor, SecretTypeInput, SecretTypeRegistryEntry, Secrets, SecretsDescription, SecretsModuleConfig, SecretsOperationOptions, SecretsSource, SecretsSourceConfig, SecretsSourceDescription, SecretsSourceMap, SecretsSourceType, SecretsSubscriptionOptions, SecretsValidators, SecretsWriteOptions, ServerOnlyWorkloadConfig, Session, SessionStore, SetTenantIntegrationOptions, SsoDescription, StagedIntegration, StandardSchemaWithValidate, StateCookie, StoreConflictError, StoreConflictKind, SubjectRef, SubjectScope, SubjectType, SubjectTypeScoping, SubscriptionMode, TenantDirectory, TenantDirectoryIdentity, TenantHostMatch, TenantHostRoutingStrategy, TenantIntegration, TenantIntegrationStatus, TenantIntegrationView, TenantIonCache, TenantManagement, TenantPathMatch, TenantPathNamespace, TenantPathRoutingStrategy, TenantResponse, TenantRoutingStrategy, TenantSelectorRoutingStrategy, TenantStatus, TenantStore, TenantValidators, TenantWebhookPayload, TmDescription, TmIntegratorConfig, TokenResponse, TokenValidationResult, TrustedIdp, TrustedProvisioningClient, UnexpectedBodySummary, UpdateTenantRequest, UserEndpointPolicy, UserStore, UserStoreOptions, UsersInboundHandlerConfig, ValidateResult, VaultConfigLocator, VaultLfvSecretsConfig, VaultSecretsConfig, VaultWebSocketAuthHeader, VaultWebSocketSecretsConfig, VaultWorkloadAuthConfig, WorkforceUser, Workload, WorkloadClient, WorkloadClientDescription, WorkloadConfig, WorkloadConfigMap, WorkloadDescription, WorkloadGetToken, WorkloadIdentity, WorkloadIdentityStore, WorkloadIncomingOutgoing, WorkloadPrincipal, WorkloadTokenResponse, WorkloadTokenStore, WorkloadTrustedIdpDescription, WorkloadValidators, X509Certificate, XML_MEDIA_TYPE, accessRefId, accessRootId, assertEcid, assertRequiredSubjectType, assertValidSubjectTypeScoping, buildTenantPath, buildTenantUrl, catalogEntityStore, claimsToUser, compareDisplayExpiryDesc, configTrustedClientGrants, customAttributes, customerResourceSchema, debugLogger, decodeDisplayCookie, decodeUser, deepEqualPlain, defaultDisplayUser, defaultLogger, defaultSecretContentType, defineCatalog, defineSecretType, deprecateRetiredCodeCatalogRows, discoveredProfileCookieName, encodeDisplayCookie, formatEcid, formatLogLine, generateULID, getCodeCatalogEntity, groupResourceSchema, idTokenClaimsSchema, infoLogger, isCodeCatalog, isConfigLocator, isConfigSourceError, isEcid, isJsonResponse, isStoreConflictError, jwtAssertionClaimsSchema, list, listGenerator, matchTenantHost, matchTenantPath, matchesListFilter, materializeCodeCatalogEntity, mergeCodeCatalogEntity, mergeConfig, must, normalizeTenantBaseDomain, normalizeTenantPathNamespace, normalizeTenantRoutingStrategy, oidcCallbackSchema, parseEcid, parseJsonc, parseKmsPoolControlDocument, parseKmsPoolDocument, prettyLogger, profileCookieName, projectDisplayUser, readDisplayCookies, readJsonResponse, readyCatalogEntry, remoteConfigSecretType, resolveDiscoveredCookieMax, resolveDiscoveredCookieTtlSeconds, resolveDisplayCookieMax, sanitizeDisplayUser, serializeConfig, silentLogger, stableConfigHash, stripJsonComments, tmIntegrationState, toCodeCatalog, tokenResponseSchema, trimTrailingSlash, trustedClientPermissionsForPrincipal, unexpectedBodySummary, unionCatalogRead, userSchema, validationFailureResponse, version, waitOn, warnLogger, withValidate, workloadResourceSchema, workloadTokenResponseSchema };
|