@ionite/core 0.0.24-beta.20261003.16 → 0.0.24-beta.20261005.20
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 +796 -454
- package/dist/index.js +2 -2
- package/dist/server.d.ts +803 -409
- package/dist/server.js +1 -1
- package/dist/shared/core-hjq34ezq.js +4 -0
- package/package.json +1 -1
- package/dist/shared/core-njzaahvy.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
|
|
@@ -316,6 +109,54 @@ declare function accessRefId(value: unknown): string;
|
|
|
316
109
|
*/
|
|
317
110
|
declare function accessRootId(change: AccessChange): string;
|
|
318
111
|
/**
|
|
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.
|
|
115
|
+
*
|
|
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.
|
|
118
|
+
*/
|
|
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;
|
|
158
|
+
};
|
|
159
|
+
/**
|
|
319
160
|
* Shared minimal identity fields used to build both the workforce user
|
|
320
161
|
* record (`BaseUser`) and the CIAM customer record (`BaseCustomer`), as well
|
|
321
162
|
* as the authenticated session types (`WorkforceUser`, `Customer`).
|
|
@@ -1130,11 +971,10 @@ type WorkloadIdentity = {
|
|
|
1130
971
|
/** Granted OAuth scopes (space-delimited). */
|
|
1131
972
|
scope?: string;
|
|
1132
973
|
/**
|
|
1133
|
-
*
|
|
1134
|
-
*
|
|
1135
|
-
* 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.
|
|
1136
976
|
*/
|
|
1137
|
-
|
|
977
|
+
derivedEntitlements?: DerivedEntitlement[];
|
|
1138
978
|
/**
|
|
1139
979
|
* Enterprise Controlled ID for this workload (`ecid:<realm>:<opaque>`), when carried on the token
|
|
1140
980
|
* `ecid` claim or enriched from a wired `WorkloadIdentityStore`. A workload is its own governance
|
|
@@ -1580,6 +1420,12 @@ interface WorkloadIdentityStore<TExtended = object> {
|
|
|
1580
1420
|
* policy (flag, auto-revoke + notify, or simply audit).
|
|
1581
1421
|
*/
|
|
1582
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
|
+
};
|
|
1583
1429
|
type AccessRequestCreate = {
|
|
1584
1430
|
subject: string;
|
|
1585
1431
|
subjectType: SubjectType;
|
|
@@ -1660,13 +1506,6 @@ interface IamDeltaEmitter {
|
|
|
1660
1506
|
/** Re-push the complete IAM-visible snapshot to the destination (app-driven full reconcile). */
|
|
1661
1507
|
reconcile(input: IamDeltaReconcileInput): Promise<IamDeltaReconcileResult>;
|
|
1662
1508
|
/**
|
|
1663
|
-
* Submit an on-behalf access request at `${iam.url}/AccessRequests`. Requires only the
|
|
1664
|
-
* destination channel (`url` plus the `deltaAudience` workload client) — not `isReady()`, which
|
|
1665
|
-
* additionally demands delta egress (a per-kind `'patch'` mode and its receipt stores). A tenant
|
|
1666
|
-
* whose IAM aggregates by pull alone may still submit requests.
|
|
1667
|
-
*/
|
|
1668
|
-
requestAccess(input: AccessRequestCreate): Promise<AccessRequestResult>;
|
|
1669
|
-
/**
|
|
1670
1509
|
* Read a previously captured destination reference without making a network request. Returns
|
|
1671
1510
|
* undefined until the resource has been resolved or pushed to the configured IAM destination.
|
|
1672
1511
|
* `correlationId` is a User's `externalId` or an entitlement's App-owned catalog `id`.
|
|
@@ -1675,18 +1514,222 @@ interface IamDeltaEmitter {
|
|
|
1675
1514
|
isReady(): boolean;
|
|
1676
1515
|
ready(timeout?: number): Promise<void>;
|
|
1677
1516
|
}
|
|
1678
|
-
|
|
1679
|
-
type
|
|
1680
|
-
/**
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1517
|
+
/** Built-in provider types. `oidc` is a generic OIDC provider; `magic-link` is the passwordless flow. */
|
|
1518
|
+
type CIAMProviderType = "oidc" | "google" | "github" | "microsoft" | "apple" | "magic-link";
|
|
1519
|
+
/** Branding colors for rendering a provider button in light and dark themes. */
|
|
1520
|
+
type CIAMProviderColors = {
|
|
1521
|
+
/** Background/brand color for light theme (hex or CSS color). */
|
|
1522
|
+
light: string;
|
|
1523
|
+
/** Background/brand color for dark theme (hex or CSS color). */
|
|
1524
|
+
dark: string;
|
|
1525
|
+
/** Optional secondary/accent color. */
|
|
1526
|
+
secondary?: string;
|
|
1527
|
+
};
|
|
1528
|
+
/** Operator-supplied branding so the UI can render a provider list without hardcoding. */
|
|
1529
|
+
type CIAMProviderBranding = {
|
|
1530
|
+
/** Human-readable name shown on the login button (e.g. "Google"). */
|
|
1531
|
+
displayName: string;
|
|
1532
|
+
/** External icon URL (typically an SVG/PNG hosted on a CDN). */
|
|
1533
|
+
iconUrl?: string;
|
|
1534
|
+
/** Light/dark brand colors. */
|
|
1535
|
+
colors?: CIAMProviderColors;
|
|
1536
|
+
/** Optional provider info/marketing URL. */
|
|
1537
|
+
url?: string;
|
|
1538
|
+
};
|
|
1539
|
+
/**
|
|
1540
|
+
* A single CIAM provider declaration. OIDC/OAuth2 endpoint and credential
|
|
1541
|
+
* fields come from the ConfigSource (never application code).
|
|
1542
|
+
*/
|
|
1543
|
+
type CIAMProviderConfig = {
|
|
1544
|
+
/** Provider adapter type. Selects defaults and claim mapping. */
|
|
1545
|
+
type: CIAMProviderType;
|
|
1546
|
+
/** Whether this provider is enabled. Defaults to true when omitted. */
|
|
1547
|
+
enabled?: boolean;
|
|
1548
|
+
/** Recommended display order (ascending). Ties broken by declaration order. */
|
|
1549
|
+
order?: number;
|
|
1550
|
+
/** UI branding metadata. */
|
|
1551
|
+
branding?: CIAMProviderBranding;
|
|
1552
|
+
/** OIDC issuer/authority (used for discovery when explicit endpoints are omitted). */
|
|
1553
|
+
authority?: string;
|
|
1554
|
+
/** Authorization endpoint (overrides preset). */
|
|
1555
|
+
authorizationUrl?: string;
|
|
1556
|
+
/** Token endpoint (overrides preset). */
|
|
1557
|
+
tokenUrl?: string;
|
|
1558
|
+
/** JWKS endpoint for ID token verification (overrides preset). */
|
|
1559
|
+
jwksUri?: string;
|
|
1560
|
+
/** OAuth2 UserInfo endpoint for providers without an ID token (e.g. GitHub). */
|
|
1561
|
+
userInfoUrl?: string;
|
|
1562
|
+
/** OAuth2 client id (ConfigSource-only). */
|
|
1563
|
+
clientId?: string;
|
|
1564
|
+
/** OAuth2 client secret (ConfigSource-only). */
|
|
1565
|
+
clientSecret?: string;
|
|
1566
|
+
/** Requested scope (overrides preset). */
|
|
1567
|
+
scope?: string;
|
|
1568
|
+
/** Apple: team id for client-secret generation. */
|
|
1569
|
+
teamId?: string;
|
|
1570
|
+
/** Apple: key id for client-secret generation. */
|
|
1571
|
+
keyId?: string;
|
|
1572
|
+
/** Apple: PKCS#8 PEM private key for client-secret generation. */
|
|
1573
|
+
privateKey?: string;
|
|
1574
|
+
/**
|
|
1575
|
+
* ConfigSource-only. When set, this provider's token claims are derived into session-scoped
|
|
1576
|
+
* customer entitlements at login. Magic link has no issuer and ignores this block.
|
|
1577
|
+
*/
|
|
1578
|
+
claimsAsEntitlements?: ClaimsAsEntitlements;
|
|
1579
|
+
/** ConfigSource-only IdP assignment workflow used when IAM assignment is `'idp'`. */
|
|
1580
|
+
accessRequests?: AccessRequestsDestination;
|
|
1581
|
+
};
|
|
1582
|
+
/** Sanitized provider entry returned by the discovery endpoint for the UI. */
|
|
1583
|
+
type CIAMProviderDescriptor = {
|
|
1584
|
+
/** Provider key (matches the RemoteConfig map key); used as `?provider=`. */
|
|
1585
|
+
name: string;
|
|
1586
|
+
type: CIAMProviderType;
|
|
1587
|
+
displayName: string;
|
|
1588
|
+
/** SDK-derived login URL to navigate to (begins the flow). */
|
|
1589
|
+
loginUrl: string;
|
|
1590
|
+
iconUrl?: string;
|
|
1591
|
+
colors?: CIAMProviderColors;
|
|
1592
|
+
url?: string;
|
|
1593
|
+
};
|
|
1594
|
+
/**
|
|
1595
|
+
* Light display cookies (`${cookiesPrefix}.profile`).
|
|
1596
|
+
*
|
|
1597
|
+
* The envelope is SDK-owned. App code supplies only `user`. The cookie is not an
|
|
1598
|
+
* authentication input: the server never reads it to resolve a session, and the browser
|
|
1599
|
+
* may forge it. `expiresAt` is display metadata so a client can order entries without a
|
|
1600
|
+
* round trip; authoritative expiry is the peer `${cookiesPrefix}.session` record.
|
|
1601
|
+
*/
|
|
1602
|
+
declare const DISPLAY_COOKIE_SUFFIX = ".profile";
|
|
1603
|
+
declare const DISPLAY_COOKIE_VERSION = 1;
|
|
1604
|
+
declare const DEFAULT_DISPLAY_COOKIE_MAX = 10;
|
|
1605
|
+
declare const DEFAULT_DISCOVERED_COOKIE_MAX = 10;
|
|
1606
|
+
declare const DEFAULT_DISCOVERED_COOKIE_TTL_SECONDS: number;
|
|
1607
|
+
declare const DISCOVERED_COOKIE_PREFIX = "ion.discovered";
|
|
1608
|
+
type DisplayCookieConfig = {
|
|
1609
|
+
/**
|
|
1610
|
+
* When true, the SDK writes a non-HttpOnly display cookie beside the opaque session cookie.
|
|
1611
|
+
* ConfigSource-only. Default false.
|
|
1612
|
+
*/
|
|
1613
|
+
enabled?: boolean;
|
|
1614
|
+
/**
|
|
1615
|
+
* How many display cookies a single response may leave on the browser, newest session window
|
|
1616
|
+
* first. ConfigSource-only. Values below 1 fall back to {@link DEFAULT_DISPLAY_COOKIE_MAX}.
|
|
1617
|
+
* @default 10
|
|
1618
|
+
*/
|
|
1619
|
+
max?: number;
|
|
1620
|
+
/**
|
|
1621
|
+
* Session-less tenant hints written by an App after an explicit directory lookup.
|
|
1622
|
+
* ConfigSource-only and off unless `enabled` is true.
|
|
1623
|
+
*/
|
|
1624
|
+
discovered?: DiscoveredDisplayCookieConfig;
|
|
1625
|
+
};
|
|
1626
|
+
type DiscoveredDisplayCookieConfig = {
|
|
1627
|
+
enabled?: boolean;
|
|
1628
|
+
/** Browser hint lifetime. This is not a session expiry. @default 14400 */
|
|
1629
|
+
ttlSeconds?: number;
|
|
1630
|
+
/** Independent cap; discovered hints never displace live-session entries. @default 10 */
|
|
1631
|
+
max?: number;
|
|
1632
|
+
};
|
|
1633
|
+
/** What `${basePath}/auth/user` and `${basePath}/auth/customer` return. ConfigSource-only. */
|
|
1634
|
+
type UserEndpointPolicy = "full" | "display" | "off";
|
|
1635
|
+
type DisplayUser = Record<string, string | number | boolean | null>;
|
|
1636
|
+
type DisplayAuthType = "sso" | "ciam";
|
|
1637
|
+
type DisplayCookieEnvelope = {
|
|
1638
|
+
v: typeof DISPLAY_COOKIE_VERSION;
|
|
1639
|
+
/**
|
|
1640
|
+
* Session envelopes omit this field (absent means `'session'`) so the wire format stays identical
|
|
1641
|
+
* to cookies written before discovered hints existed; only discovered hints set it explicitly.
|
|
1642
|
+
* Readers must treat `undefined` as `'session'`.
|
|
1643
|
+
*/
|
|
1644
|
+
kind?: "session" | "discovered";
|
|
1645
|
+
tenantId?: string;
|
|
1646
|
+
authType: DisplayAuthType;
|
|
1647
|
+
/** ISO timestamp copied from the session window at write time. Display only. */
|
|
1648
|
+
expiresAt: string;
|
|
1649
|
+
user: DisplayUser;
|
|
1650
|
+
tenantName?: string;
|
|
1651
|
+
};
|
|
1652
|
+
type DisplayIdentity = {
|
|
1653
|
+
name?: string;
|
|
1654
|
+
email?: string;
|
|
1655
|
+
avatar?: string;
|
|
1656
|
+
};
|
|
1657
|
+
declare function resolveDisplayCookieMax(max: number | undefined): number;
|
|
1658
|
+
declare function resolveDiscoveredCookieMax(max: number | undefined): number;
|
|
1659
|
+
declare function resolveDiscoveredCookieTtlSeconds(ttlSeconds: number | undefined): number;
|
|
1660
|
+
declare function defaultDisplayUser(identity: DisplayIdentity): DisplayUser;
|
|
1661
|
+
/** Drop non-primitives and auth-bearing keys. Display cookies carry UI fields only. */
|
|
1662
|
+
declare function sanitizeDisplayUser(value: unknown): DisplayUser;
|
|
1663
|
+
/**
|
|
1664
|
+
* AppDev projection runs on the full user (including custom attributes). When omitted, or when it
|
|
1665
|
+
* throws, the cookie carries name, email, and avatar only. Forbidden and non-primitive fields are
|
|
1666
|
+
* dropped either way — a projector cannot put a session id or token into the cookie.
|
|
1667
|
+
*/
|
|
1668
|
+
declare function projectDisplayUser<TUser extends object>(user: TUser, projector?: (user: TUser) => unknown): DisplayUser;
|
|
1669
|
+
declare function encodeDisplayCookie(envelope: DisplayCookieEnvelope): string;
|
|
1670
|
+
declare function decodeDisplayCookie(raw: string): DisplayCookieEnvelope | undefined;
|
|
1671
|
+
type ParsedDisplayCookie = {
|
|
1672
|
+
name: string;
|
|
1673
|
+
prefix: string;
|
|
1674
|
+
envelope: DisplayCookieEnvelope;
|
|
1675
|
+
};
|
|
1676
|
+
declare function readDisplayCookies(cookieHeader: string | null | undefined): ParsedDisplayCookie[];
|
|
1677
|
+
/** Client ordering: newest session window first. Invalid timestamps sort last. */
|
|
1678
|
+
declare function compareDisplayExpiryDesc(a: string | undefined, b: string | undefined): number;
|
|
1679
|
+
declare function profileCookieName(cookiesPrefix: string): string;
|
|
1680
|
+
declare function discoveredProfileCookieName(tenantId: string): string;
|
|
1681
|
+
/**
|
|
1682
|
+
* Minimal logger interface compatible with common structured logging patterns.
|
|
1683
|
+
*/
|
|
1684
|
+
interface Logger {
|
|
1685
|
+
trace(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1686
|
+
debug(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1687
|
+
info(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1688
|
+
warn(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1689
|
+
error(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1690
|
+
}
|
|
1691
|
+
/**
|
|
1692
|
+
* Renders a structured logger call as one greppable line while leaving the source fields separate
|
|
1693
|
+
* for telemetry exporters.
|
|
1694
|
+
*/
|
|
1695
|
+
declare function formatLogLine(level: keyof Logger, message: unknown, optionalParams?: unknown[], timestamp?: Date): string;
|
|
1696
|
+
/**
|
|
1697
|
+
* No-op implementation — does nothing for any log level
|
|
1698
|
+
*/
|
|
1699
|
+
declare const silentLogger: Logger;
|
|
1700
|
+
/**
|
|
1701
|
+
* Default logger used until an ionite instance is configured with
|
|
1702
|
+
* an OpenTelemetry-backed logger or an application-provided logger.
|
|
1703
|
+
*/
|
|
1704
|
+
declare const defaultLogger: Logger;
|
|
1705
|
+
/**
|
|
1706
|
+
* Logger that logs messages debug, info, warn, and error to the console.
|
|
1707
|
+
*/
|
|
1708
|
+
declare const debugLogger: Logger;
|
|
1709
|
+
/**
|
|
1710
|
+
* Logger that logs messages info, warn, and error to the console.
|
|
1711
|
+
*/
|
|
1712
|
+
declare const infoLogger: Logger;
|
|
1713
|
+
/**
|
|
1714
|
+
* Logger that logs messages warn and error to the console.
|
|
1715
|
+
*/
|
|
1716
|
+
declare const warnLogger: Logger;
|
|
1717
|
+
/**
|
|
1718
|
+
* Human-readable single-line console logger for local application output.
|
|
1719
|
+
*/
|
|
1720
|
+
declare const prettyLogger: Logger;
|
|
1721
|
+
import { StandardSchemaV1 as StandardSchemaV15 } from "@standard-schema/spec";
|
|
1722
|
+
type ChangeListener = () => void;
|
|
1723
|
+
/**
|
|
1724
|
+
* Reactive source/adapter contract. Implemented by config-source-backed adapters
|
|
1725
|
+
* (for example `SecretsSource`) to advertise change subscription and source liveness.
|
|
1726
|
+
* `isAvailable()` here is an adapter liveness hook and is intentionally distinct from
|
|
1727
|
+
* module readiness (`ModuleReadiness.isReady()` / `ready()`).
|
|
1728
|
+
*/
|
|
1729
|
+
type ReactiveHandle = {
|
|
1730
|
+
beforeChange?(listener: ChangeListener): () => void;
|
|
1731
|
+
afterChange?(listener: ChangeListener): () => void;
|
|
1732
|
+
isAvailable?(): boolean;
|
|
1690
1733
|
};
|
|
1691
1734
|
/**
|
|
1692
1735
|
* Readiness contract for reactive module/service handles whose usability depends on
|
|
@@ -1705,54 +1748,423 @@ type ModuleReadiness = {
|
|
|
1705
1748
|
isReady?(): boolean;
|
|
1706
1749
|
ready?(timeout?: number): Promise<void>;
|
|
1707
1750
|
};
|
|
1708
|
-
/**
|
|
1709
|
-
* Canonical ionite module names used by the holistic readiness report and the
|
|
1710
|
-
* `requireReady([...])` helper. These are the config-driven module handles whose readiness can be
|
|
1711
|
-
* composed; `ion.isReady()` itself stays the narrow "config applied" signal and is NOT one of these.
|
|
1712
|
-
*
|
|
1713
|
-
* IAM-delta egress is intentionally NOT a member. Delta patch-back is best-effort and non-fatal (a
|
|
1714
|
-
* failed push only logs `degraded` and is reconciled by a later full sync — the Batch 7 drift-signal
|
|
1715
|
-
* contract), so folding it into `iam` readiness would let a delta-target outage make
|
|
1716
|
-
* `requireReady(['iam'])` false and take the app out of rotation for a signal that is designed not to
|
|
1717
|
-
* block. Apps that DO treat delta as a hard dependency can gate on `ion.iam.delta.isReady()` /
|
|
1718
|
-
* `ion.iam.delta.ready()` explicitly instead.
|
|
1719
|
-
*/
|
|
1720
|
-
type ModuleName = "sso" | "ciam" | "iam" | "workload" | "otel" | "secrets" | "kms" | "authz" | "tm";
|
|
1721
|
-
/** Per-module readiness snapshot in {@link ReadinessReport}. */
|
|
1722
|
-
type ModuleReadinessState = {
|
|
1723
|
-
/** Whether the module is active (present/requested) in the effective config. Inactive modules never block readiness. */
|
|
1724
|
-
active: boolean;
|
|
1725
|
-
/** Synchronous readiness of the module right now (mirrors the module's own `isReady()`). */
|
|
1751
|
+
/**
|
|
1752
|
+
* Canonical ionite module names used by the holistic readiness report and the
|
|
1753
|
+
* `requireReady([...])` helper. These are the config-driven module handles whose readiness can be
|
|
1754
|
+
* composed; `ion.isReady()` itself stays the narrow "config applied" signal and is NOT one of these.
|
|
1755
|
+
*
|
|
1756
|
+
* IAM-delta egress is intentionally NOT a member. Delta patch-back is best-effort and non-fatal (a
|
|
1757
|
+
* failed push only logs `degraded` and is reconciled by a later full sync — the Batch 7 drift-signal
|
|
1758
|
+
* contract), so folding it into `iam` readiness would let a delta-target outage make
|
|
1759
|
+
* `requireReady(['iam'])` false and take the app out of rotation for a signal that is designed not to
|
|
1760
|
+
* block. Apps that DO treat delta as a hard dependency can gate on `ion.iam.delta.isReady()` /
|
|
1761
|
+
* `ion.iam.delta.ready()` explicitly instead.
|
|
1762
|
+
*/
|
|
1763
|
+
type ModuleName = "sso" | "ciam" | "iam" | "workload" | "otel" | "secrets" | "kms" | "authz" | "tm";
|
|
1764
|
+
/** Per-module readiness snapshot in {@link ReadinessReport}. */
|
|
1765
|
+
type ModuleReadinessState = {
|
|
1766
|
+
/** Whether the module is active (present/requested) in the effective config. Inactive modules never block readiness. */
|
|
1767
|
+
active: boolean;
|
|
1768
|
+
/** Synchronous readiness of the module right now (mirrors the module's own `isReady()`). */
|
|
1769
|
+
ready: boolean;
|
|
1770
|
+
/** Human-readable explanation when the module is `active` but not `ready`. */
|
|
1771
|
+
reason?: string;
|
|
1772
|
+
};
|
|
1773
|
+
/**
|
|
1774
|
+
* Holistic, read-only readiness snapshot for an ionite instance. Returned by
|
|
1775
|
+
* `ion.readiness()` and used by the built-in `${basePath}/readyz` endpoint. This is composition
|
|
1776
|
+
* DATA, not a request gate: applications combine it (via `ion.requireReady([...])`) with their own
|
|
1777
|
+
* non-ionite dependency checks to build their health endpoints.
|
|
1778
|
+
*/
|
|
1779
|
+
type ReadinessReport = {
|
|
1780
|
+
/** True when config has been applied (`applied`) and every ACTIVE module is ready. */
|
|
1781
|
+
ok: boolean;
|
|
1782
|
+
/** Whether RemoteConfig has been applied at least once (mirrors `ion.isReady()`). */
|
|
1783
|
+
applied: boolean;
|
|
1784
|
+
/** Per-module readiness keyed by {@link ModuleName}. */
|
|
1785
|
+
modules: Record<ModuleName, ModuleReadinessState>;
|
|
1786
|
+
/** Most recent config-application outcome (last applied time and last error, if any). */
|
|
1787
|
+
config: ConfigApplyStatus;
|
|
1788
|
+
};
|
|
1789
|
+
/** Result of `ion.requireReady(names)`: a synchronous, declarative readiness gate over selected modules. */
|
|
1790
|
+
type RequireReadyResult = {
|
|
1791
|
+
/** True when config is applied and every requested module is ready. */
|
|
1792
|
+
ok: boolean;
|
|
1793
|
+
/** The requested modules that are not ready, with reasons when available. */
|
|
1794
|
+
notReady: Array<{
|
|
1795
|
+
name: ModuleName;
|
|
1796
|
+
reason?: string;
|
|
1797
|
+
}>;
|
|
1798
|
+
};
|
|
1799
|
+
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";
|
|
1800
|
+
type CapabilityEndpointUrls = {
|
|
1801
|
+
readyzUrl: string;
|
|
1802
|
+
capabilitiezUrl: string;
|
|
1803
|
+
sso: {
|
|
1804
|
+
loginUrl: string;
|
|
1805
|
+
userUrl: string;
|
|
1806
|
+
logoutUrl: string;
|
|
1807
|
+
logoutBackChannelUrl: string;
|
|
1808
|
+
refreshUrl: string;
|
|
1809
|
+
callbackUrl: string;
|
|
1810
|
+
};
|
|
1811
|
+
workload: {
|
|
1812
|
+
validateUrl: string;
|
|
1813
|
+
jwksUrl: string;
|
|
1814
|
+
};
|
|
1815
|
+
iam: {
|
|
1816
|
+
basePath: string;
|
|
1817
|
+
usersUrl: string;
|
|
1818
|
+
groupsUrl: string;
|
|
1819
|
+
workloadsUrl: string;
|
|
1820
|
+
customersUrl: string;
|
|
1821
|
+
};
|
|
1822
|
+
ciam: {
|
|
1823
|
+
magicLinkUrl: string;
|
|
1824
|
+
magicLinkLoginUrl: string;
|
|
1825
|
+
customerUrl: string;
|
|
1826
|
+
customerLoginUrl: string;
|
|
1827
|
+
customerCallbackUrl: string;
|
|
1828
|
+
customerProvidersUrl: string;
|
|
1829
|
+
logoutUrl: string;
|
|
1830
|
+
};
|
|
1831
|
+
};
|
|
1832
|
+
type CapabilityState = {
|
|
1833
|
+
module: ModuleName;
|
|
1834
|
+
active: boolean;
|
|
1835
|
+
ready: boolean;
|
|
1836
|
+
testable: boolean;
|
|
1837
|
+
urls?: string[];
|
|
1838
|
+
reason?: string;
|
|
1839
|
+
};
|
|
1840
|
+
type CapabilitiezManifest = {
|
|
1841
|
+
sdk: {
|
|
1842
|
+
/** Runtime @ionite/server version serving this manifest. */
|
|
1843
|
+
version: string;
|
|
1844
|
+
/** Version of the stable capability/test-unit vocabulary. */
|
|
1845
|
+
catalogVersion: number;
|
|
1846
|
+
};
|
|
1847
|
+
basePath: string;
|
|
1848
|
+
urls: CapabilityEndpointUrls;
|
|
1849
|
+
modules: Record<ModuleName, ModuleReadinessState>;
|
|
1850
|
+
capabilities: Record<CapabilityKey, CapabilityState>;
|
|
1851
|
+
/**
|
|
1852
|
+
* True when FrameworkConfig wired a live LFV callback transport. Boolean only — the transport
|
|
1853
|
+
* object, Redis URL, and credentials are never exposed.
|
|
1854
|
+
*/
|
|
1855
|
+
lfvCallbackTransport: boolean;
|
|
1856
|
+
};
|
|
1857
|
+
type OtelSignalName = "traces" | "metrics" | "logs";
|
|
1858
|
+
type OtelProtocol = "http/protobuf" | "http/json";
|
|
1859
|
+
type OtelProviderType = "otlp" | "grafana-lgtm" | "datadog" | "splunk" | "elastic";
|
|
1860
|
+
type OtelLogLevel = "trace" | "debug" | "info" | "warn" | "error";
|
|
1861
|
+
type OtelLevels = Partial<Record<OtelLogLevel, boolean>>;
|
|
1862
|
+
/** Local console mirror policy: disable it or set its minimum emitted severity. */
|
|
1863
|
+
type OtelConsoleMode = "off" | OtelLogLevel;
|
|
1864
|
+
type OtelAttributeValue = string | number | boolean | string[] | number[] | boolean[];
|
|
1865
|
+
type OtelAttributes = Record<string, OtelAttributeValue>;
|
|
1866
|
+
type OtelSignalConfig = {
|
|
1867
|
+
/** Per-signal OTLP endpoint. When omitted, the module appends /v1/{signal} to `endpoint`. */
|
|
1868
|
+
endpoint?: string;
|
|
1869
|
+
headers?: Record<string, string>;
|
|
1870
|
+
timeoutMillis?: number;
|
|
1871
|
+
concurrencyLimit?: number;
|
|
1872
|
+
};
|
|
1873
|
+
type OtelMetricsSignalConfig = OtelSignalConfig & {
|
|
1874
|
+
exportIntervalMillis?: number;
|
|
1875
|
+
exportTimeoutMillis?: number;
|
|
1876
|
+
};
|
|
1877
|
+
type OtelOAuthClientCredentialsConfig = {
|
|
1878
|
+
tokenUrl: string;
|
|
1879
|
+
clientId: string;
|
|
1880
|
+
clientSecret: string;
|
|
1881
|
+
scope?: string;
|
|
1882
|
+
audience?: string;
|
|
1883
|
+
headers?: Record<string, string>;
|
|
1884
|
+
};
|
|
1885
|
+
type OtelLogRecord = {
|
|
1886
|
+
severityNumber?: number;
|
|
1887
|
+
severityText?: string;
|
|
1888
|
+
body?: unknown;
|
|
1889
|
+
attributes?: Record<string, unknown>;
|
|
1890
|
+
};
|
|
1891
|
+
/**
|
|
1892
|
+
* OpenTelemetry config supplied by ConfigSource/RemoteConfig.
|
|
1893
|
+
* Keep environment-specific URLs and credentials here, not in FrameworkConfig.
|
|
1894
|
+
*/
|
|
1895
|
+
type OtelConfig = {
|
|
1896
|
+
type?: OtelProviderType;
|
|
1897
|
+
name: string;
|
|
1898
|
+
endpoint?: string;
|
|
1899
|
+
protocol?: OtelProtocol;
|
|
1900
|
+
headers?: Record<string, string>;
|
|
1901
|
+
apiKey?: string;
|
|
1902
|
+
/** Name of a `RemoteConfig.kms` key pool used for exporter authentication. */
|
|
1903
|
+
apiKeyPool?: string;
|
|
1904
|
+
apiKeyHeader?: string;
|
|
1905
|
+
oauth?: OtelOAuthClientCredentialsConfig;
|
|
1906
|
+
version?: string;
|
|
1907
|
+
deploymentEnvironment?: string;
|
|
1908
|
+
resourceAttributes?: OtelAttributes;
|
|
1909
|
+
levels?: OtelLevels;
|
|
1910
|
+
/** `'off'` exports only to OTel; a level dual-emits at or above that severity. Defaults to `'info'`. */
|
|
1911
|
+
console?: OtelConsoleMode;
|
|
1912
|
+
traces?: boolean | OtelSignalConfig;
|
|
1913
|
+
metrics?: boolean | OtelMetricsSignalConfig;
|
|
1914
|
+
logs?: boolean | OtelSignalConfig;
|
|
1915
|
+
};
|
|
1916
|
+
/**
|
|
1917
|
+
* OpenTelemetry app/runtime wiring supplied by code.
|
|
1918
|
+
* Instrumentation instances and callbacks live here because they are framework-specific code.
|
|
1919
|
+
*/
|
|
1920
|
+
type FrameworkOtelConfig = {
|
|
1921
|
+
levels?: OtelLevels;
|
|
1922
|
+
instrument?: unknown[];
|
|
1923
|
+
/** Optional app-owned destination/renderer for records admitted by `RemoteConfig.otel.console`. */
|
|
1924
|
+
console?: (record: OtelLogRecord) => void;
|
|
1925
|
+
spanProcessors?: unknown[];
|
|
1926
|
+
metricReaders?: unknown[];
|
|
1927
|
+
logRecordProcessors?: unknown[];
|
|
1928
|
+
sampler?: unknown;
|
|
1929
|
+
textMapPropagator?: unknown;
|
|
1930
|
+
contextManager?: unknown;
|
|
1931
|
+
configure?: (options: Record<string, unknown>) => Record<string, unknown> | void;
|
|
1932
|
+
};
|
|
1933
|
+
type Otel = {
|
|
1934
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
1935
|
+
describe(): OtelDescription;
|
|
1936
|
+
beforeChange(listener: ChangeListener): () => void;
|
|
1937
|
+
afterChange(listener: ChangeListener): () => void;
|
|
1938
|
+
isReady(): boolean;
|
|
1939
|
+
ready(timeout?: number): Promise<void>;
|
|
1940
|
+
logger: Logger;
|
|
1941
|
+
forceFlush(): Promise<void>;
|
|
1942
|
+
shutdown(): Promise<void>;
|
|
1943
|
+
};
|
|
1944
|
+
type ModuleDescriptionBase<TModule extends ModuleName> = {
|
|
1945
|
+
module: TModule;
|
|
1946
|
+
active: boolean;
|
|
1947
|
+
ready: boolean;
|
|
1948
|
+
};
|
|
1949
|
+
type CookieDescription = {
|
|
1950
|
+
prefix?: string;
|
|
1951
|
+
path?: string;
|
|
1952
|
+
secure?: boolean;
|
|
1953
|
+
sameSite?: "Strict" | "Lax";
|
|
1954
|
+
domain?: string;
|
|
1955
|
+
};
|
|
1956
|
+
type SsoDescription = ModuleDescriptionBase<"sso"> & {
|
|
1957
|
+
authority?: string;
|
|
1958
|
+
tokenUrl?: string;
|
|
1959
|
+
authorizationUrl?: string;
|
|
1960
|
+
clientId?: string;
|
|
1961
|
+
redirectUri?: string;
|
|
1962
|
+
responseType?: "code";
|
|
1963
|
+
scope?: string;
|
|
1964
|
+
silentRedirectUri?: string;
|
|
1965
|
+
jwksUri?: string;
|
|
1966
|
+
endSessionEndpoint?: string;
|
|
1967
|
+
revocationEndpoint?: string;
|
|
1968
|
+
cookies: CookieDescription;
|
|
1969
|
+
loginStateTtl?: number;
|
|
1970
|
+
rotationGraceSeconds?: number;
|
|
1971
|
+
sessionWindowSeconds?: number;
|
|
1972
|
+
displayCookie?: DisplayCookieConfig;
|
|
1973
|
+
jit: {
|
|
1974
|
+
enabled: boolean;
|
|
1975
|
+
userStore: boolean;
|
|
1976
|
+
};
|
|
1977
|
+
sessionStore: boolean;
|
|
1978
|
+
/** Present when RemoteConfig configured claim-derived entitlements for this workforce issuer. */
|
|
1979
|
+
claimsAsEntitlements?: ClaimsAsEntitlementsDescription;
|
|
1980
|
+
urls: Partial<CapabilityEndpointUrls["sso"]>;
|
|
1981
|
+
};
|
|
1982
|
+
type CiamProviderDescription = {
|
|
1983
|
+
name: string;
|
|
1984
|
+
type: CIAMProviderType;
|
|
1985
|
+
enabled: boolean;
|
|
1986
|
+
order?: number;
|
|
1987
|
+
branding?: CIAMProviderBranding;
|
|
1988
|
+
authority?: string;
|
|
1989
|
+
authorizationUrl?: string;
|
|
1990
|
+
tokenUrl?: string;
|
|
1991
|
+
jwksUri?: string;
|
|
1992
|
+
userInfoUrl?: string;
|
|
1993
|
+
clientId?: string;
|
|
1994
|
+
scope?: string;
|
|
1995
|
+
claimsAsEntitlements?: ClaimsAsEntitlementsDescription;
|
|
1996
|
+
loginUrl: string;
|
|
1997
|
+
};
|
|
1998
|
+
type CiamDescription = ModuleDescriptionBase<"ciam"> & {
|
|
1999
|
+
magicLinkTtl?: number;
|
|
2000
|
+
loginStateTtl?: number;
|
|
2001
|
+
sessionTtl?: number;
|
|
2002
|
+
cookies: CookieDescription;
|
|
2003
|
+
displayCookie?: DisplayCookieConfig;
|
|
2004
|
+
jit: {
|
|
2005
|
+
enabled: boolean;
|
|
2006
|
+
customerStore: boolean;
|
|
2007
|
+
};
|
|
2008
|
+
sessionStore: boolean;
|
|
2009
|
+
magicLinkStore: boolean;
|
|
2010
|
+
providers: CiamProviderDescription[];
|
|
2011
|
+
urls: Partial<CapabilityEndpointUrls["ciam"]>;
|
|
2012
|
+
};
|
|
2013
|
+
type IamPrincipalDescription = {
|
|
2014
|
+
enabled: boolean;
|
|
2015
|
+
assignment: IamAssignmentPolicy;
|
|
2016
|
+
delta?: "patch";
|
|
2017
|
+
storeWired: boolean;
|
|
2018
|
+
};
|
|
2019
|
+
type AccessRequestsChannelsDescription = {
|
|
2020
|
+
iam?: string;
|
|
2021
|
+
sso?: string;
|
|
2022
|
+
ciam: Record<string, string>;
|
|
2023
|
+
};
|
|
2024
|
+
type IamDescription = ModuleDescriptionBase<"iam"> & {
|
|
2025
|
+
url?: string;
|
|
2026
|
+
deltaAudience?: string;
|
|
2027
|
+
accessRequests: AccessRequestsChannelsDescription;
|
|
2028
|
+
users: IamPrincipalDescription;
|
|
2029
|
+
workloads: IamPrincipalDescription;
|
|
2030
|
+
customers: IamPrincipalDescription;
|
|
2031
|
+
groups: {
|
|
2032
|
+
enabled: boolean;
|
|
2033
|
+
catalogWired: boolean;
|
|
2034
|
+
};
|
|
2035
|
+
urls: Partial<CapabilityEndpointUrls["iam"]>;
|
|
2036
|
+
};
|
|
2037
|
+
type WorkloadTrustedIdpDescription = {
|
|
2038
|
+
issuer: string;
|
|
2039
|
+
jwksUri: string;
|
|
2040
|
+
audience: string | string[];
|
|
2041
|
+
claimsAsEntitlements?: ClaimsAsEntitlementsDescription;
|
|
2042
|
+
};
|
|
2043
|
+
type WorkloadClientDescription = {
|
|
2044
|
+
name: string;
|
|
2045
|
+
ready: boolean;
|
|
2046
|
+
clientId?: string;
|
|
2047
|
+
workloadId?: string;
|
|
2048
|
+
idpTokenUrl?: string;
|
|
2049
|
+
scope?: string;
|
|
2050
|
+
audience?: string;
|
|
2051
|
+
authMethod: "client_secret" | "private_key_jwt" | "server_only";
|
|
2052
|
+
};
|
|
2053
|
+
type WorkloadDescription = ModuleDescriptionBase<"workload"> & {
|
|
2054
|
+
incoming: {
|
|
2055
|
+
trustedIdps: WorkloadTrustedIdpDescription[];
|
|
2056
|
+
};
|
|
2057
|
+
outgoing: WorkloadClientDescription[];
|
|
2058
|
+
urls: Partial<CapabilityEndpointUrls["workload"]>;
|
|
2059
|
+
};
|
|
2060
|
+
type SecretsSourceDescription = {
|
|
2061
|
+
name: string;
|
|
2062
|
+
type: "dev" | "gcp" | "vault" | "aws" | "azure";
|
|
2063
|
+
ready: boolean;
|
|
2064
|
+
url?: string;
|
|
2065
|
+
clientId?: string;
|
|
2066
|
+
authMethod?: string;
|
|
2067
|
+
};
|
|
2068
|
+
type SecretsDescription = ModuleDescriptionBase<"secrets"> & {
|
|
2069
|
+
sources: SecretsSourceDescription[];
|
|
2070
|
+
};
|
|
2071
|
+
type KmsPoolDescription = {
|
|
2072
|
+
name: string;
|
|
2073
|
+
source?: string;
|
|
2074
|
+
path: string;
|
|
2075
|
+
ready: boolean;
|
|
2076
|
+
};
|
|
2077
|
+
type KmsDescription = ModuleDescriptionBase<"kms"> & {
|
|
2078
|
+
pools: KmsPoolDescription[];
|
|
2079
|
+
};
|
|
2080
|
+
type OtelSignalDescription = {
|
|
2081
|
+
enabled: boolean;
|
|
2082
|
+
endpoint?: string;
|
|
2083
|
+
timeoutMillis?: number;
|
|
2084
|
+
concurrencyLimit?: number;
|
|
2085
|
+
exportIntervalMillis?: number;
|
|
2086
|
+
exportTimeoutMillis?: number;
|
|
2087
|
+
};
|
|
2088
|
+
type OtelDescription = ModuleDescriptionBase<"otel"> & {
|
|
2089
|
+
type?: OtelProviderType;
|
|
2090
|
+
name?: string;
|
|
2091
|
+
endpoint?: string;
|
|
2092
|
+
protocol?: OtelProtocol;
|
|
2093
|
+
apiKeyPool?: string;
|
|
2094
|
+
apiKeyHeader?: string;
|
|
2095
|
+
oauth?: {
|
|
2096
|
+
tokenUrl: string;
|
|
2097
|
+
clientId: string;
|
|
2098
|
+
scope?: string;
|
|
2099
|
+
audience?: string;
|
|
2100
|
+
};
|
|
2101
|
+
version?: string;
|
|
2102
|
+
deploymentEnvironment?: string;
|
|
2103
|
+
resourceAttributes?: OtelAttributes;
|
|
2104
|
+
levels?: OtelLevels;
|
|
2105
|
+
console?: OtelConsoleMode;
|
|
2106
|
+
signals: {
|
|
2107
|
+
traces: OtelSignalDescription;
|
|
2108
|
+
metrics: OtelSignalDescription;
|
|
2109
|
+
logs: OtelSignalDescription;
|
|
2110
|
+
};
|
|
2111
|
+
};
|
|
2112
|
+
type OaaDescription = {
|
|
1726
2113
|
ready: boolean;
|
|
1727
|
-
|
|
1728
|
-
|
|
2114
|
+
url?: string;
|
|
2115
|
+
providerId?: string;
|
|
2116
|
+
datasourceId?: string;
|
|
2117
|
+
applicationName?: string;
|
|
2118
|
+
applicationType?: string;
|
|
2119
|
+
population?: Record<string, string>;
|
|
2120
|
+
fullSync: boolean;
|
|
2121
|
+
};
|
|
2122
|
+
type AuthzDescription = ModuleDescriptionBase<"authz"> & {
|
|
2123
|
+
trustedProvisioningClients: Array<{
|
|
2124
|
+
issuer: string;
|
|
2125
|
+
audience: string | string[];
|
|
2126
|
+
clientId: string;
|
|
2127
|
+
permissions: string[];
|
|
2128
|
+
}>;
|
|
2129
|
+
oaa?: OaaDescription;
|
|
2130
|
+
stores: {
|
|
2131
|
+
accessStore: boolean;
|
|
2132
|
+
accessIndex: boolean;
|
|
2133
|
+
catalogStore: boolean;
|
|
2134
|
+
resources: boolean;
|
|
2135
|
+
};
|
|
1729
2136
|
};
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
2137
|
+
type TmDescription = ModuleDescriptionBase<"tm"> & {
|
|
2138
|
+
enabled: boolean;
|
|
2139
|
+
integrator?: {
|
|
2140
|
+
id: string;
|
|
2141
|
+
name?: string;
|
|
2142
|
+
url: string;
|
|
2143
|
+
issuer: string;
|
|
2144
|
+
jwksUri: string;
|
|
2145
|
+
audience: string;
|
|
2146
|
+
clientId: string;
|
|
2147
|
+
};
|
|
2148
|
+
consentTtlSeconds?: number;
|
|
2149
|
+
maxRedeemAttempts?: number;
|
|
2150
|
+
};
|
|
2151
|
+
type ModuleDescription = SsoDescription | CiamDescription | IamDescription | WorkloadDescription | SecretsDescription | KmsDescription | OtelDescription | AuthzDescription | TmDescription;
|
|
2152
|
+
type IoniteDescription = {
|
|
2153
|
+
id?: string;
|
|
2154
|
+
sdk: {
|
|
2155
|
+
version: string;
|
|
2156
|
+
catalogVersion: number;
|
|
2157
|
+
};
|
|
2158
|
+
basePath: string;
|
|
2159
|
+
urls: CapabilityEndpointUrls;
|
|
1738
2160
|
ok: boolean;
|
|
1739
|
-
/** Whether RemoteConfig has been applied at least once (mirrors `ion.isReady()`). */
|
|
1740
2161
|
applied: boolean;
|
|
1741
|
-
/** Per-module readiness keyed by {@link ModuleName}. */
|
|
1742
|
-
modules: Record<ModuleName, ModuleReadinessState>;
|
|
1743
|
-
/** Most recent config-application outcome (last applied time and last error, if any). */
|
|
1744
2162
|
config: ConfigApplyStatus;
|
|
1745
|
-
|
|
1746
|
-
|
|
1747
|
-
type RequireReadyResult = {
|
|
1748
|
-
/** True when config is applied and every requested module is ready. */
|
|
1749
|
-
ok: boolean;
|
|
1750
|
-
/** The requested modules that are not ready, with reasons when available. */
|
|
1751
|
-
notReady: Array<{
|
|
1752
|
-
name: ModuleName;
|
|
1753
|
-
reason?: string;
|
|
2163
|
+
modules: Record<ModuleName, ModuleReadinessState & {
|
|
2164
|
+
description?: ModuleDescription;
|
|
1754
2165
|
}>;
|
|
1755
2166
|
};
|
|
2167
|
+
import { StandardSchemaV1 as StandardSchemaV14 } from "@standard-schema/spec";
|
|
1756
2168
|
/**
|
|
1757
2169
|
* Token caching for workload identity authentication.
|
|
1758
2170
|
*
|
|
@@ -1943,12 +2355,10 @@ type WorkloadConfigBase = {
|
|
|
1943
2355
|
*/
|
|
1944
2356
|
audience?: string;
|
|
1945
2357
|
/**
|
|
1946
|
-
* Per-IdP intent (incoming/server role only):
|
|
1947
|
-
*
|
|
1948
|
-
* helpers (audience-bound). Mirrors `RemoteConfig.authz.scopesAsEntitlements` but scoped to a single
|
|
1949
|
-
* trusted IdP so first-party scopes can be honored while federated/third-party ones are not.
|
|
2358
|
+
* Per-IdP intent (incoming/server role only): token claims from THIS trust anchor may satisfy
|
|
2359
|
+
* `has*` (audience-bound). ConfigSource-only. There is no global fallback.
|
|
1950
2360
|
*/
|
|
1951
|
-
|
|
2361
|
+
claimsAsEntitlements?: ClaimsAsEntitlements;
|
|
1952
2362
|
/**
|
|
1953
2363
|
* Default OAuth2 scopes (space-delimited)
|
|
1954
2364
|
*/
|
|
@@ -2058,16 +2468,10 @@ type ClientCredentialsWorkloadConfig = WorkloadConfigBase & {
|
|
|
2058
2468
|
*/
|
|
2059
2469
|
clientId: string;
|
|
2060
2470
|
/**
|
|
2061
|
-
* OAuth2 client secret
|
|
2062
|
-
*
|
|
2063
|
-
*/
|
|
2064
|
-
clientSecret?: string;
|
|
2065
|
-
/**
|
|
2066
|
-
* Path to a projected federated token (e.g. AKS Workload Identity), sent as a jwt-bearer
|
|
2067
|
-
* `client_assertion` in place of `client_secret`. Defaults to `AZURE_FEDERATED_TOKEN_FILE`.
|
|
2068
|
-
* Read on every acquisition because the platform rotates it.
|
|
2471
|
+
* OAuth2 client secret
|
|
2472
|
+
* REQUIRED for Client Credentials mode
|
|
2069
2473
|
*/
|
|
2070
|
-
|
|
2474
|
+
clientSecret: string;
|
|
2071
2475
|
};
|
|
2072
2476
|
/**
|
|
2073
2477
|
* Server-Only Workload Configuration
|
|
@@ -2130,8 +2534,8 @@ type TrustedIdp = {
|
|
|
2130
2534
|
* one of these values (with `azp` fallback). REQUIRED: prevents cross-app token reuse.
|
|
2131
2535
|
*/
|
|
2132
2536
|
audience: string | string[];
|
|
2133
|
-
/** Per-IdP
|
|
2134
|
-
|
|
2537
|
+
/** Per-IdP claims intent (see {@link WorkloadConfigBase.claimsAsEntitlements}). */
|
|
2538
|
+
claimsAsEntitlements?: ClaimsAsEntitlements;
|
|
2135
2539
|
};
|
|
2136
2540
|
/**
|
|
2137
2541
|
* Workload config with separate incoming (server) and outgoing (client) roles.
|
|
@@ -2174,6 +2578,8 @@ interface WorkloadGetToken {
|
|
|
2174
2578
|
* Workload Identity Authentication Interface
|
|
2175
2579
|
*/
|
|
2176
2580
|
type Workload = WorkloadConfig & ModuleReadiness & Required<Pick<ModuleReadiness, "isReady" | "ready">> & {
|
|
2581
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
2582
|
+
describe: () => WorkloadDescription;
|
|
2177
2583
|
/**
|
|
2178
2584
|
* Returns a token for this workload configuration.
|
|
2179
2585
|
* The optional argument overrides the configured default scope.
|
|
@@ -2188,7 +2594,9 @@ type Workload = WorkloadConfig & ModuleReadiness & Required<Pick<ModuleReadiness
|
|
|
2188
2594
|
/** Framework-agnostic request handler for the Workload module (token, validate, jwks, refresh). */
|
|
2189
2595
|
handler: (request: Request) => Promise<Response>;
|
|
2190
2596
|
};
|
|
2191
|
-
type WorkloadClient = Pick<Workload, "getToken" | "refreshToken" | "generateJWTAssertion" | "revokeToken" | "beforeChange" | "afterChange" | "isReady" | "ready"
|
|
2597
|
+
type WorkloadClient = Pick<Workload, "getToken" | "refreshToken" | "generateJWTAssertion" | "revokeToken" | "beforeChange" | "afterChange" | "isReady" | "ready"> & {
|
|
2598
|
+
describe(): WorkloadClientDescription;
|
|
2599
|
+
};
|
|
2192
2600
|
/**
|
|
2193
2601
|
* SCIM Error response structure
|
|
2194
2602
|
*/
|
|
@@ -2362,6 +2770,7 @@ type IAMAccessRequestsConfig = {
|
|
|
2362
2770
|
request: AccessRequestResult;
|
|
2363
2771
|
created: boolean;
|
|
2364
2772
|
}>;
|
|
2773
|
+
get?: (id: string) => Promise<AccessRequestResult | undefined>;
|
|
2365
2774
|
};
|
|
2366
2775
|
type IAMEntitlementRequestUrlContext = {
|
|
2367
2776
|
request: Request;
|
|
@@ -2619,6 +3028,8 @@ type IAMUsersInbound = {
|
|
|
2619
3028
|
* - `users_inbound` is available when `userStore` is configured
|
|
2620
3029
|
*/
|
|
2621
3030
|
type IAM = Omit<IAMConfig, "users" | "workloads" | "customers" | "groups"> & {
|
|
3031
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
3032
|
+
describe: () => IamDescription;
|
|
2622
3033
|
users: IamPrincipalKind;
|
|
2623
3034
|
workloads: IamPrincipalKind;
|
|
2624
3035
|
customers: IamPrincipalKind;
|
|
@@ -2803,6 +3214,8 @@ type KmsPoolSlot = {
|
|
|
2803
3214
|
ready(timeout?: number): Promise<void>;
|
|
2804
3215
|
};
|
|
2805
3216
|
type KmsPool = {
|
|
3217
|
+
/** Secret-free, JSON-serializable pool configuration and readiness summary. */
|
|
3218
|
+
describe(): KmsPoolDescription;
|
|
2806
3219
|
/**
|
|
2807
3220
|
* Returns the current granted key for slot 0. Calls wait on one shared local subscription until a
|
|
2808
3221
|
* grant is available; repeated calls resolve from the local cache and never initiate a vault request.
|
|
@@ -2835,6 +3248,8 @@ type KmsPool = {
|
|
|
2835
3248
|
* (`ion.kms.<name>`); use `getPool(name)` when the name is dynamic.
|
|
2836
3249
|
*/
|
|
2837
3250
|
type Kms = ModuleReadiness & {
|
|
3251
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
3252
|
+
describe(): KmsDescription;
|
|
2838
3253
|
readonly config: Readonly<KmsConfig>;
|
|
2839
3254
|
listPools(): string[];
|
|
2840
3255
|
getPool(name: string): KmsPool;
|
|
@@ -2845,91 +3260,6 @@ type Kms = ModuleReadiness & {
|
|
|
2845
3260
|
declare function parseKmsPoolDocument(value: unknown): KmsPoolDocument;
|
|
2846
3261
|
/** Parse and fail closed on a vault-stored KMS key-material document. */
|
|
2847
3262
|
declare function parseKmsPoolControlDocument(value: unknown): KmsPoolControlDocument;
|
|
2848
|
-
type OtelSignalName = "traces" | "metrics" | "logs";
|
|
2849
|
-
type OtelProtocol = "http/protobuf" | "http/json";
|
|
2850
|
-
type OtelProviderType = "otlp" | "grafana-lgtm" | "datadog" | "splunk" | "elastic";
|
|
2851
|
-
type OtelLogLevel = "trace" | "debug" | "info" | "warn" | "error";
|
|
2852
|
-
type OtelLevels = Partial<Record<OtelLogLevel, boolean>>;
|
|
2853
|
-
/** Local console mirror policy: disable it or set its minimum emitted severity. */
|
|
2854
|
-
type OtelConsoleMode = "off" | OtelLogLevel;
|
|
2855
|
-
type OtelAttributeValue = string | number | boolean | string[] | number[] | boolean[];
|
|
2856
|
-
type OtelAttributes = Record<string, OtelAttributeValue>;
|
|
2857
|
-
type OtelSignalConfig = {
|
|
2858
|
-
/** Per-signal OTLP endpoint. When omitted, the module appends /v1/{signal} to `endpoint`. */
|
|
2859
|
-
endpoint?: string;
|
|
2860
|
-
headers?: Record<string, string>;
|
|
2861
|
-
timeoutMillis?: number;
|
|
2862
|
-
concurrencyLimit?: number;
|
|
2863
|
-
};
|
|
2864
|
-
type OtelMetricsSignalConfig = OtelSignalConfig & {
|
|
2865
|
-
exportIntervalMillis?: number;
|
|
2866
|
-
exportTimeoutMillis?: number;
|
|
2867
|
-
};
|
|
2868
|
-
type OtelOAuthClientCredentialsConfig = {
|
|
2869
|
-
tokenUrl: string;
|
|
2870
|
-
clientId: string;
|
|
2871
|
-
clientSecret: string;
|
|
2872
|
-
scope?: string;
|
|
2873
|
-
audience?: string;
|
|
2874
|
-
headers?: Record<string, string>;
|
|
2875
|
-
};
|
|
2876
|
-
type OtelLogRecord = {
|
|
2877
|
-
severityNumber?: number;
|
|
2878
|
-
severityText?: string;
|
|
2879
|
-
body?: unknown;
|
|
2880
|
-
attributes?: Record<string, unknown>;
|
|
2881
|
-
};
|
|
2882
|
-
/**
|
|
2883
|
-
* OpenTelemetry config supplied by ConfigSource/RemoteConfig.
|
|
2884
|
-
* Keep environment-specific URLs and credentials here, not in FrameworkConfig.
|
|
2885
|
-
*/
|
|
2886
|
-
type OtelConfig = {
|
|
2887
|
-
type?: OtelProviderType;
|
|
2888
|
-
name: string;
|
|
2889
|
-
endpoint?: string;
|
|
2890
|
-
protocol?: OtelProtocol;
|
|
2891
|
-
headers?: Record<string, string>;
|
|
2892
|
-
apiKey?: string;
|
|
2893
|
-
/** Name of a `RemoteConfig.kms` key pool used for exporter authentication. */
|
|
2894
|
-
apiKeyPool?: string;
|
|
2895
|
-
apiKeyHeader?: string;
|
|
2896
|
-
oauth?: OtelOAuthClientCredentialsConfig;
|
|
2897
|
-
version?: string;
|
|
2898
|
-
deploymentEnvironment?: string;
|
|
2899
|
-
resourceAttributes?: OtelAttributes;
|
|
2900
|
-
levels?: OtelLevels;
|
|
2901
|
-
/** `'off'` exports only to OTel; a level dual-emits at or above that severity. Defaults to `'info'`. */
|
|
2902
|
-
console?: OtelConsoleMode;
|
|
2903
|
-
traces?: boolean | OtelSignalConfig;
|
|
2904
|
-
metrics?: boolean | OtelMetricsSignalConfig;
|
|
2905
|
-
logs?: boolean | OtelSignalConfig;
|
|
2906
|
-
};
|
|
2907
|
-
/**
|
|
2908
|
-
* OpenTelemetry app/runtime wiring supplied by code.
|
|
2909
|
-
* Instrumentation instances and callbacks live here because they are framework-specific code.
|
|
2910
|
-
*/
|
|
2911
|
-
type FrameworkOtelConfig = {
|
|
2912
|
-
levels?: OtelLevels;
|
|
2913
|
-
instrument?: unknown[];
|
|
2914
|
-
/** Optional app-owned destination/renderer for records admitted by `RemoteConfig.otel.console`. */
|
|
2915
|
-
console?: (record: OtelLogRecord) => void;
|
|
2916
|
-
spanProcessors?: unknown[];
|
|
2917
|
-
metricReaders?: unknown[];
|
|
2918
|
-
logRecordProcessors?: unknown[];
|
|
2919
|
-
sampler?: unknown;
|
|
2920
|
-
textMapPropagator?: unknown;
|
|
2921
|
-
contextManager?: unknown;
|
|
2922
|
-
configure?: (options: Record<string, unknown>) => Record<string, unknown> | void;
|
|
2923
|
-
};
|
|
2924
|
-
type Otel = {
|
|
2925
|
-
beforeChange(listener: ChangeListener): () => void;
|
|
2926
|
-
afterChange(listener: ChangeListener): () => void;
|
|
2927
|
-
isReady(): boolean;
|
|
2928
|
-
ready(timeout?: number): Promise<void>;
|
|
2929
|
-
logger: Logger;
|
|
2930
|
-
forceFlush(): Promise<void>;
|
|
2931
|
-
shutdown(): Promise<void>;
|
|
2932
|
-
};
|
|
2933
3263
|
/**
|
|
2934
3264
|
* Session management for tracking user sessions and enabling backchannel logout.
|
|
2935
3265
|
*
|
|
@@ -3022,6 +3352,12 @@ type Session<TExtended = object> = {
|
|
|
3022
3352
|
*/
|
|
3023
3353
|
claims?: Record<string, unknown>;
|
|
3024
3354
|
/**
|
|
3355
|
+
* Entitlements derived from token claims at login and refresh. Session-scoped: they die with the
|
|
3356
|
+
* record (TTL, rotation, back-channel logout) and are never written to the access stores.
|
|
3357
|
+
* Only meaningful when the store declares {@link SessionStoreCapabilities.derivedEntitlements}.
|
|
3358
|
+
*/
|
|
3359
|
+
entitlements?: DerivedEntitlement[];
|
|
3360
|
+
/**
|
|
3025
3361
|
* Optional access-token claims for modules that keep access/id claims separate.
|
|
3026
3362
|
*/
|
|
3027
3363
|
accessClaims?: Record<string, unknown>;
|
|
@@ -3058,7 +3394,21 @@ type Session<TExtended = object> = {
|
|
|
3058
3394
|
* }
|
|
3059
3395
|
* ```
|
|
3060
3396
|
*/
|
|
3397
|
+
/**
|
|
3398
|
+
* Store-declared capabilities. The SDK does not probe a custom store (a write at init is forbidden);
|
|
3399
|
+
* a store that omits the declaration is treated as incapable.
|
|
3400
|
+
*/
|
|
3401
|
+
type SessionStoreCapabilities = {
|
|
3402
|
+
/**
|
|
3403
|
+
* The store persists {@link Session.entitlements} round-trip. JSON-backed stores (the SDK Redis
|
|
3404
|
+
* and in-memory implementations) declare this. A column-mapped SQL store declares it only after
|
|
3405
|
+
* it has a column for the derived set.
|
|
3406
|
+
*/
|
|
3407
|
+
derivedEntitlements?: boolean;
|
|
3408
|
+
};
|
|
3061
3409
|
interface SessionStore<TExtended = object> {
|
|
3410
|
+
/** Declaration of what this store persists beyond the required session fields. */
|
|
3411
|
+
readonly capabilities?: SessionStoreCapabilities;
|
|
3062
3412
|
/**
|
|
3063
3413
|
* Create a new session in the store.
|
|
3064
3414
|
*
|
|
@@ -3391,6 +3741,13 @@ type SSOConfig<
|
|
|
3391
3741
|
*/
|
|
3392
3742
|
userStore?: UserStore<TUserData>;
|
|
3393
3743
|
/**
|
|
3744
|
+
* ConfigSource-only. When set, the named token claims are derived into session-scoped
|
|
3745
|
+
* entitlements at login and refresh. Never set from application code.
|
|
3746
|
+
*/
|
|
3747
|
+
claimsAsEntitlements?: ClaimsAsEntitlements;
|
|
3748
|
+
/** ConfigSource-only IdP assignment workflow used when IAM assignment is `'idp'`. */
|
|
3749
|
+
accessRequests?: AccessRequestsDestination;
|
|
3750
|
+
/**
|
|
3394
3751
|
* Enable Just-In-Time (JIT) user provisioning.
|
|
3395
3752
|
* When enabled, new users are automatically created in the userStore on their first login.
|
|
3396
3753
|
* When disabled (default), only existing users in the userStore are updated on login.
|
|
@@ -3490,6 +3847,8 @@ type SSO<
|
|
|
3490
3847
|
TSessionData = Record<string, never>,
|
|
3491
3848
|
TUserData = Record<string, never>
|
|
3492
3849
|
> = SSOConfig<TSessionData, TUserData> & {
|
|
3850
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
3851
|
+
describe: () => SsoDescription;
|
|
3493
3852
|
getUser: (request: Request) => Promise<WorkforceUser | undefined>;
|
|
3494
3853
|
/**
|
|
3495
3854
|
* Degraded-aware resolution: distinguishes a signed-out visitor (`unauthenticated`) from a failed
|
|
@@ -3837,7 +4196,12 @@ type SecretsValidators = {
|
|
|
3837
4196
|
*/
|
|
3838
4197
|
validateSourceConfig?(sourceName: string, config: SecretsSourceConfig): void;
|
|
3839
4198
|
};
|
|
4199
|
+
type DescribedSecretsSource = SecretsSource & {
|
|
4200
|
+
describe(): SecretsSourceDescription;
|
|
4201
|
+
};
|
|
3840
4202
|
type Secrets = ModuleReadiness & {
|
|
4203
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
4204
|
+
describe(): SecretsDescription;
|
|
3841
4205
|
/**
|
|
3842
4206
|
* Liveness across configured sources. Returns false when any ready source reports a degraded
|
|
3843
4207
|
* `isAvailable()` (e.g. an HTTP-poll source whose upstream is failing). Surfaced in
|
|
@@ -3849,7 +4213,7 @@ type Secrets = ModuleReadiness & {
|
|
|
3849
4213
|
/** Returns configured secrets source names/keys. */
|
|
3850
4214
|
listSecretsSources(): string[];
|
|
3851
4215
|
/** Gets a named secrets source client. Throws when missing. */
|
|
3852
|
-
getSecretsSource(sourceName: string):
|
|
4216
|
+
getSecretsSource(sourceName: string): DescribedSecretsSource;
|
|
3853
4217
|
/** Creates a lazy handle for a secret in a named source. */
|
|
3854
4218
|
get(sourceName: string, path: string, options?: SecretsOperationOptions): SecretHandle;
|
|
3855
4219
|
/** Reads a secret from a named secrets source client. */
|
|
@@ -4299,17 +4663,6 @@ type TrustedProvisioningClient = {
|
|
|
4299
4663
|
type AuthzConfig = {
|
|
4300
4664
|
oaa?: AuthzOaaConfig;
|
|
4301
4665
|
/**
|
|
4302
|
-
* RemoteConfig/Ops-governed intent. When `true`, the request-level `has*` helpers auto-honor a
|
|
4303
|
-
* principal's OAuth token `scope` claims as entitlements: an app-wide check (no `resource` arg)
|
|
4304
|
-
* also allows when the target id matches a granted scope. Default `false` (secure): scopes never
|
|
4305
|
-
* satisfy `has*` and authorization comes solely from the `AccessAssignmentStore`/`AccessIndex` (IAM/SCIM).
|
|
4306
|
-
* Read at check time so it can be flipped live. This NEVER affects token validation, and the
|
|
4307
|
-
* explicit `hasScope*` helpers are always available regardless of this flag. Resource-scoped
|
|
4308
|
-
* checks (a `resource` arg supplied) are never satisfied by scopes. For workload principals this is
|
|
4309
|
-
* a fallback only: a matched trusted IdP's per-entry `scopesAsEntitlements` takes precedence.
|
|
4310
|
-
*/
|
|
4311
|
-
scopesAsEntitlements?: boolean;
|
|
4312
|
-
/**
|
|
4313
4666
|
* Config-declared trusted provisioning clients (read-path overlay; ConfigSource/ECI-owned). Each
|
|
4314
4667
|
* entry pre-authorizes a workload client to hold specific permissions without a stored grant. See
|
|
4315
4668
|
* {@link TrustedProvisioningClient}. Honored in the request-level `has*` helpers BEFORE the
|
|
@@ -4390,11 +4743,11 @@ type FrameworkConfig = {
|
|
|
4390
4743
|
* `afterLogout` callbacks, which are code-only and therefore kept. RemoteConfig-only intent flags (e.g. IAM `users`/`groups`
|
|
4391
4744
|
* enablement) are also stripped from code.
|
|
4392
4745
|
*/
|
|
4393
|
-
type SSOConfigFromCode = Omit<SSOConfig, "loginUrl" | "userUrl" | "logoutUrl" | "logoutBackChannelUrl" | "refreshUrl" | "redirectUri">;
|
|
4746
|
+
type SSOConfigFromCode = Omit<SSOConfig, "loginUrl" | "userUrl" | "logoutUrl" | "logoutBackChannelUrl" | "refreshUrl" | "redirectUri" | "claimsAsEntitlements" | "accessRequests">;
|
|
4394
4747
|
type IAMConfigFromCode = Omit<IAMConfig, "usersUrl" | "groupsUrl" | "workloadsUrl" | "customersUrl" | "users" | "workloads" | "customers" | "groups" | "discovery" | "deltaAudience"> & {
|
|
4395
4748
|
discovery?: Omit<IAMDiscoveryConfig, "basePath">;
|
|
4396
4749
|
};
|
|
4397
|
-
type WorkloadServerConfigFromCode = Omit<Partial<WorkloadConfig>, "tokenUrl" | "validateUrl" | "jwksUrl" | "refreshUrl">;
|
|
4750
|
+
type WorkloadServerConfigFromCode = Omit<Partial<WorkloadConfig>, "tokenUrl" | "validateUrl" | "jwksUrl" | "refreshUrl" | "claimsAsEntitlements">;
|
|
4398
4751
|
type FrameworkWorkloadConfigFromCode = WorkloadServerConfigFromCode | {
|
|
4399
4752
|
incoming?: WorkloadServerConfigFromCode;
|
|
4400
4753
|
outgoing?: FrameworkWorkloadIncomingOutgoing["outgoing"];
|
|
@@ -4813,6 +5166,8 @@ type CIAM<
|
|
|
4813
5166
|
TMagicLinkData = Record<string, never>,
|
|
4814
5167
|
TCustomerData = Record<string, never>
|
|
4815
5168
|
> = CIAMConfig<TMagicLinkData, TCustomerData> & {
|
|
5169
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
5170
|
+
describe: () => CiamDescription;
|
|
4816
5171
|
getCustomer: (request: Request) => Promise<Customer | undefined>;
|
|
4817
5172
|
/**
|
|
4818
5173
|
* Degraded-aware resolution: distinguishes a signed-out visitor (`unauthenticated`) from a failed
|
|
@@ -4956,6 +5311,15 @@ type IoniteBase = {
|
|
|
4956
5311
|
* module is ready; `notReady` lists the requested modules that are not ready, with reasons.
|
|
4957
5312
|
*/
|
|
4958
5313
|
requireReady(names: ModuleName[]): RequireReadyResult;
|
|
5314
|
+
/**
|
|
5315
|
+
* Returns an allow-listed, JSON-serializable snapshot for privileged App-owned diagnostics.
|
|
5316
|
+
* Unlike `config`, this never contains credentials, secret values, stores, or callbacks.
|
|
5317
|
+
*
|
|
5318
|
+
* Diagnostics only: each call rebuilds the readiness report and every module projection. Call it
|
|
5319
|
+
* from an admin loader, never per request; handlers and health probes use `isReady()` /
|
|
5320
|
+
* `requireReady()`.
|
|
5321
|
+
*/
|
|
5322
|
+
describe(): IoniteDescription;
|
|
4959
5323
|
/** Most recent RemoteConfig application outcome (last applied time and last error, if any). */
|
|
4960
5324
|
configStatus: ConfigApplyStatus;
|
|
4961
5325
|
/** Release config subscriptions and background resources. */
|
|
@@ -4976,8 +5340,8 @@ type ResolvedRoute = {
|
|
|
4976
5340
|
/**
|
|
4977
5341
|
* Authorization required to invoke this route. When set, the router enforces it (deny-by-default)
|
|
4978
5342
|
* before the handler runs: the caller must hold the {@link EndpointPermission.permission} as a
|
|
4979
|
-
* granted entitlement, or
|
|
4980
|
-
*
|
|
5343
|
+
* granted entitlement, or a claim-derived entitlement from the issuing IdP's `claimsAsEntitlements`
|
|
5344
|
+
* block. Login/public/discovery routes omit it.
|
|
4981
5345
|
*
|
|
4982
5346
|
* Three states, chosen so a custom `resolve` cannot silently drop authorization by omission:
|
|
4983
5347
|
* - a permission object → enforce it;
|
|
@@ -5041,7 +5405,10 @@ type ConfigChangeOptions = {
|
|
|
5041
5405
|
type EnvironmentType = "POC" | "DEV" | "QA" | "PROD";
|
|
5042
5406
|
type TenantStatus = "pending" | "processing" | "completed" | "failed" | "action_required";
|
|
5043
5407
|
type CreateTenantRequestBase = {
|
|
5408
|
+
/** App-owned routing key. The integrator may suggest it; the App may reject a collision. */
|
|
5044
5409
|
id: string;
|
|
5410
|
+
/** Stable tenant id in the integrator/ionite domain. */
|
|
5411
|
+
integratorTenantId: string;
|
|
5045
5412
|
companyId: string;
|
|
5046
5413
|
companyName: string;
|
|
5047
5414
|
environmentType: EnvironmentType;
|
|
@@ -5053,8 +5420,9 @@ type CreateTenantRequestBase = {
|
|
|
5053
5420
|
};
|
|
5054
5421
|
/**
|
|
5055
5422
|
* Body for creating a tenant (`POST ${basePath}`). `configLocator` may be supplied immediately or
|
|
5056
|
-
* patched later after the tenant's ConfigSource has been provisioned. Idempotent by
|
|
5057
|
-
* re-submitting
|
|
5423
|
+
* patched later after the tenant's ConfigSource has been provisioned. Idempotent by
|
|
5424
|
+
* `integratorTenantId`: re-submitting that id re-applies the existing App tenant even when its
|
|
5425
|
+
* App-owned `id` differs from the integrator's original suggestion.
|
|
5058
5426
|
*/
|
|
5059
5427
|
type CreateTenantRequest<TExtended extends object = object> = CreateTenantRequestBase & TExtended;
|
|
5060
5428
|
/**
|
|
@@ -5128,7 +5496,10 @@ type TenantValidators<
|
|
|
5128
5496
|
};
|
|
5129
5497
|
declare function isConfigLocator(value: unknown): value is ConfigLocator;
|
|
5130
5498
|
type BaseTenant = {
|
|
5499
|
+
/** App-owned routing key. */
|
|
5131
5500
|
id: string;
|
|
5501
|
+
/** Stable tenant id in the integrator/ionite domain, once this tenant is known to ionite. */
|
|
5502
|
+
integratorTenantId?: string;
|
|
5132
5503
|
companyId: string;
|
|
5133
5504
|
companyName: string;
|
|
5134
5505
|
environmentType: EnvironmentType;
|
|
@@ -5235,9 +5606,15 @@ type FrameworkTmConfig<TTenant extends BaseTenant = BaseTenant> = {
|
|
|
5235
5606
|
exportConfig?: (context: {
|
|
5236
5607
|
tenant: TTenant;
|
|
5237
5608
|
}) => ConfigExportEnvelope | Promise<ConfigExportEnvelope>;
|
|
5609
|
+
/**
|
|
5610
|
+
* Runs after a consented tenant runtime has successfully applied config through the newly
|
|
5611
|
+
* persisted destination locator. Cleanup must be idempotent because another App replica may
|
|
5612
|
+
* observe the same handover concurrently.
|
|
5613
|
+
*/
|
|
5238
5614
|
onHandoverApplied?: (context: {
|
|
5239
5615
|
tenant: TTenant;
|
|
5240
5616
|
previousLocator?: ConfigLocator;
|
|
5617
|
+
destinationLocator: ConfigLocator;
|
|
5241
5618
|
}) => void | Promise<void>;
|
|
5242
5619
|
/** Runs after a tenant POST has durably upserted its row. Awaited; the return value is ignored and failures are logged without rolling back the tenant. */
|
|
5243
5620
|
onTenantCreated?: (context: {
|
|
@@ -5267,6 +5644,8 @@ type TenantIntegrationView = {
|
|
|
5267
5644
|
integration: TenantIntegration;
|
|
5268
5645
|
};
|
|
5269
5646
|
type TenantManagement<TTenant extends BaseTenant = BaseTenant> = ModuleReadiness & {
|
|
5647
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
5648
|
+
describe(): TmDescription;
|
|
5270
5649
|
handler(request: Request): Promise<Response>;
|
|
5271
5650
|
getTenant(id: string): Promise<TTenant | undefined>;
|
|
5272
5651
|
recordConsent(input: RecordTenantConsentInput): Promise<TTenant>;
|
|
@@ -5330,6 +5709,7 @@ interface TenantStore<TTenant extends BaseTenant = BaseTenant> {
|
|
|
5330
5709
|
getIon(id: string): Promise<Ionite | undefined>;
|
|
5331
5710
|
setIntegration?(tenantId: string, integration: TenantIntegration | undefined, options?: SetTenantIntegrationOptions): Promise<TTenant | undefined>;
|
|
5332
5711
|
getByIntegrationHandleHash?(handleHash: string): Promise<TTenant | undefined>;
|
|
5712
|
+
getByIntegratorTenantId(integratorTenantId: string): Promise<TTenant | undefined>;
|
|
5333
5713
|
}
|
|
5334
5714
|
type InMemoryTenantStoreOptions = {
|
|
5335
5715
|
/**
|
|
@@ -5943,6 +6323,8 @@ interface OaaClient<
|
|
|
5943
6323
|
TCustomer = BaseCustomer,
|
|
5944
6324
|
TWorkload = BaseWorkloadIdentity
|
|
5945
6325
|
> {
|
|
6326
|
+
/** Secret-free, JSON-serializable OAA configuration and readiness summary. */
|
|
6327
|
+
describe(): OaaDescription;
|
|
5946
6328
|
pushUser(user: TUser): Promise<void>;
|
|
5947
6329
|
pushCustomer(customer: TCustomer): Promise<void>;
|
|
5948
6330
|
pushWorkload(workload: TWorkload): Promise<void>;
|
|
@@ -6061,6 +6443,8 @@ type ReconcileReport = {
|
|
|
6061
6443
|
* wired they deny by default (`{ allow: false }`, `metadata.reason = 'access_index_not_configured'`).
|
|
6062
6444
|
*/
|
|
6063
6445
|
type Authz = {
|
|
6446
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
6447
|
+
describe(): AuthzDescription;
|
|
6064
6448
|
oaa: OaaClient;
|
|
6065
6449
|
/** Read the effective catalog union (materialized rows plus unmaterialized code templates). */
|
|
6066
6450
|
entitlements: {
|
|
@@ -6112,9 +6496,9 @@ type Authz = {
|
|
|
6112
6496
|
*/
|
|
6113
6497
|
grant(change: AccessChange): Promise<AccessChange>;
|
|
6114
6498
|
/**
|
|
6115
|
-
* Submit one grant or revoke request on a principal's behalf.
|
|
6116
|
-
*
|
|
6117
|
-
*
|
|
6499
|
+
* Submit one grant or revoke request on a principal's behalf. Under `'iam-request'`, targets the
|
|
6500
|
+
* IAM destination; under `'idp'`, targets the claims-bearing SSO/CIAM provider. One operation
|
|
6501
|
+
* maps to one approval decision, status, and tracking URL.
|
|
6118
6502
|
*/
|
|
6119
6503
|
requestAccess(change: {
|
|
6120
6504
|
subject: AccessChange["subject"];
|
|
@@ -6123,6 +6507,20 @@ type Authz = {
|
|
|
6123
6507
|
target: AccessChange["target"];
|
|
6124
6508
|
operation: "grant" | "revoke";
|
|
6125
6509
|
justification?: string;
|
|
6510
|
+
/** CIAM provider key. Required only when multiple providers expose an AccessRequests channel. */
|
|
6511
|
+
provider?: string;
|
|
6512
|
+
}): Promise<{
|
|
6513
|
+
id: string;
|
|
6514
|
+
status: "pending" | "approved" | "denied";
|
|
6515
|
+
operation: "grant" | "revoke";
|
|
6516
|
+
trackingUrl: string;
|
|
6517
|
+
}>;
|
|
6518
|
+
/** Read the destination-owned state of an on-behalf access request. */
|
|
6519
|
+
getAccessRequest(input: {
|
|
6520
|
+
id: string;
|
|
6521
|
+
subjectType: SubjectType;
|
|
6522
|
+
/** CIAM provider key. Required only when multiple providers expose an AccessRequests channel. */
|
|
6523
|
+
provider?: string;
|
|
6126
6524
|
}): Promise<{
|
|
6127
6525
|
id: string;
|
|
6128
6526
|
status: "pending" | "approved" | "denied";
|
|
@@ -6142,8 +6540,10 @@ type Authz = {
|
|
|
6142
6540
|
* - `'iam'` — never assign in-app; show a request link (or a read-only entitlement table).
|
|
6143
6541
|
* - `'iam-request'` — never assign in-app; the app submits a request on the principal's behalf via
|
|
6144
6542
|
* {@link Authz.requestAccess}.
|
|
6543
|
+
* - `'idp'` — the claims-bearing SSO/CIAM provider is assigner of record; requests use that
|
|
6544
|
+
* provider's ConfigSource-owned AccessRequests channel.
|
|
6145
6545
|
*/
|
|
6146
|
-
type IamAssignmentPolicy = "app" | "iam" | "iam-request";
|
|
6546
|
+
type IamAssignmentPolicy = "app" | "iam" | "iam-request" | "idp";
|
|
6147
6547
|
/**
|
|
6148
6548
|
* Thrown by {@link Authz.grant} when the Ops-owned assignment policy forbids in-app assignment.
|
|
6149
6549
|
* `requestUrl` is the IAM-written entitlement receipt when one exists, so the app can send the
|
|
@@ -6194,64 +6594,6 @@ declare function trustedClientPermissionsForPrincipal(authz: AuthzConfig | null
|
|
|
6194
6594
|
* OAA full sync — they are NEVER written to a store or materialized into the AccessIndex.
|
|
6195
6595
|
*/
|
|
6196
6596
|
declare function configTrustedClientGrants(authz: AuthzConfig | null | undefined): AccessChange[];
|
|
6197
|
-
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";
|
|
6198
|
-
type CapabilityEndpointUrls = {
|
|
6199
|
-
readyzUrl: string;
|
|
6200
|
-
capabilitiezUrl: string;
|
|
6201
|
-
sso: {
|
|
6202
|
-
loginUrl: string;
|
|
6203
|
-
userUrl: string;
|
|
6204
|
-
logoutUrl: string;
|
|
6205
|
-
logoutBackChannelUrl: string;
|
|
6206
|
-
refreshUrl: string;
|
|
6207
|
-
callbackUrl: string;
|
|
6208
|
-
};
|
|
6209
|
-
workload: {
|
|
6210
|
-
validateUrl: string;
|
|
6211
|
-
jwksUrl: string;
|
|
6212
|
-
};
|
|
6213
|
-
iam: {
|
|
6214
|
-
basePath: string;
|
|
6215
|
-
usersUrl: string;
|
|
6216
|
-
groupsUrl: string;
|
|
6217
|
-
workloadsUrl: string;
|
|
6218
|
-
customersUrl: string;
|
|
6219
|
-
};
|
|
6220
|
-
ciam: {
|
|
6221
|
-
magicLinkUrl: string;
|
|
6222
|
-
magicLinkLoginUrl: string;
|
|
6223
|
-
customerUrl: string;
|
|
6224
|
-
customerLoginUrl: string;
|
|
6225
|
-
customerCallbackUrl: string;
|
|
6226
|
-
customerProvidersUrl: string;
|
|
6227
|
-
logoutUrl: string;
|
|
6228
|
-
};
|
|
6229
|
-
};
|
|
6230
|
-
type CapabilityState = {
|
|
6231
|
-
module: ModuleName;
|
|
6232
|
-
active: boolean;
|
|
6233
|
-
ready: boolean;
|
|
6234
|
-
testable: boolean;
|
|
6235
|
-
urls?: string[];
|
|
6236
|
-
reason?: string;
|
|
6237
|
-
};
|
|
6238
|
-
type CapabilitiezManifest = {
|
|
6239
|
-
sdk: {
|
|
6240
|
-
/** Runtime @ionite/server version serving this manifest. */
|
|
6241
|
-
version: string;
|
|
6242
|
-
/** Version of the stable capability/test-unit vocabulary. */
|
|
6243
|
-
catalogVersion: number;
|
|
6244
|
-
};
|
|
6245
|
-
basePath: string;
|
|
6246
|
-
urls: CapabilityEndpointUrls;
|
|
6247
|
-
modules: Record<ModuleName, ModuleReadinessState>;
|
|
6248
|
-
capabilities: Record<CapabilityKey, CapabilityState>;
|
|
6249
|
-
/**
|
|
6250
|
-
* True when FrameworkConfig wired a live LFV callback transport. Boolean only — the transport
|
|
6251
|
-
* object, Redis URL, and credentials are never exposed.
|
|
6252
|
-
*/
|
|
6253
|
-
lfvCallbackTransport: boolean;
|
|
6254
|
-
};
|
|
6255
6597
|
/**
|
|
6256
6598
|
* Fields a {@link ConfigSource} may attach to a thrown error so the SDK can classify load/subscribe
|
|
6257
6599
|
* failures structurally instead of by fragile message-substring matching (§2.1). All fields are
|
|
@@ -6620,4 +6962,4 @@ type LfvErrorResponse = {
|
|
|
6620
6962
|
};
|
|
6621
6963
|
/** Generates a ULID */
|
|
6622
6964
|
declare function generateULID(prefix?: string): string;
|
|
6623
|
-
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, 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, ClientCredentialsWorkloadConfig, CodeCatalog, CodeCatalogInput, CodeCatalogNamespace, ConfigApplyStatus, ConfigChangeCallback, ConfigChangeOptions, ConfigChangeResult, ConfigErrorKind, ConfigExportEnvelope, ConfigLocator, ConfigSource, ConfigSourceEnv, ConfigSourceError, ConfigSourceErrorInit, ConfigSourceResolver, ConfigSourceType, ConfigSubscriptionOptions, ConnectRequestContext, 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, 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, IamPrincipalKind, IamPrincipalKindFlag, IdTokenClaims, IdentityResolution, InMemoryTenantStoreOptions, InferSecretType, Ionite, IoniteBase, 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, KmsIssuedKey, KmsIssuerEvent, KmsIssuerEventListener, KmsIssuerEventName, KmsKey, KmsKeyState, KmsParkDisposition, KmsParkReport, KmsParkRequest, KmsParkResult, KmsPool, KmsPoolConfig, KmsPoolControlDocument, 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, ModuleName, ModuleReadiness, ModuleReadinessState, Name, NoReserved, OCTET_STREAM_MEDIA_TYPE, OaaAccessChangeBatchItem, OaaAccessTargetType, OaaClient, OaaPrincipalPopulation, OaaSyncInput, OaaSyncOptions, OaaSyncResult, OidcCallbackParams, Otel, OtelAttributeValue, OtelAttributes, OtelConfig, OtelConsoleMode, OtelLevels, OtelLogLevel, OtelLogRecord, OtelMetricsSignalConfig, OtelOAuthClientCredentialsConfig, OtelProtocol, OtelProviderType, OtelSignalConfig, 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, SecretsModuleConfig, SecretsOperationOptions, SecretsSource, SecretsSourceConfig, SecretsSourceMap, SecretsSourceType, SecretsSubscriptionOptions, SecretsValidators, SecretsWriteOptions, ServerOnlyWorkloadConfig, Session, SessionStore, SetTenantIntegrationOptions, 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, TmIntegratorConfig, TokenResponse, TokenValidationResult, TrustedIdp, TrustedProvisioningClient, UnexpectedBodySummary, UpdateTenantRequest, UserEndpointPolicy, UserStore, UserStoreOptions, UsersInboundHandlerConfig, ValidateResult, VaultConfigLocator, VaultLfvSecretsConfig, VaultSecretsConfig, VaultWebSocketAuthHeader, VaultWebSocketSecretsConfig, VaultWorkloadAuthConfig, WorkforceUser, Workload, WorkloadClient, WorkloadConfig, WorkloadConfigMap, WorkloadGetToken, WorkloadIdentity, WorkloadIdentityStore, WorkloadIncomingOutgoing, WorkloadPrincipal, WorkloadTokenResponse, WorkloadTokenStore, 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 };
|
|
6965
|
+
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 };
|