@ionite/core 0.0.24-beta.20261003.17 → 0.0.24-beta.20261006.21
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 +855 -456
- package/dist/index.js +2 -2
- package/dist/server.d.ts +831 -379
- package/dist/server.js +1 -1
- package/dist/shared/core-knezf9yx.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
|
|
@@ -1724,35 +1767,406 @@ type ModuleReadinessState = {
|
|
|
1724
1767
|
active: boolean;
|
|
1725
1768
|
/** Synchronous readiness of the module right now (mirrors the module's own `isReady()`). */
|
|
1726
1769
|
ready: boolean;
|
|
1727
|
-
/** Human-readable explanation when the module is `active` but not `ready`. */
|
|
1728
|
-
reason?: string;
|
|
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.groups.create" | "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 = {
|
|
2113
|
+
ready: boolean;
|
|
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
|
+
/** True when the App explicitly accepts IAM-sourced entitlement creation. */
|
|
2131
|
+
inboundEntitlements: boolean;
|
|
2132
|
+
stores: {
|
|
2133
|
+
accessStore: boolean;
|
|
2134
|
+
accessIndex: boolean;
|
|
2135
|
+
catalogStore: boolean;
|
|
2136
|
+
resources: boolean;
|
|
2137
|
+
};
|
|
1729
2138
|
};
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
2139
|
+
type TmDescription = ModuleDescriptionBase<"tm"> & {
|
|
2140
|
+
enabled: boolean;
|
|
2141
|
+
ionite?: {
|
|
2142
|
+
id: string;
|
|
2143
|
+
name?: string;
|
|
2144
|
+
url: string;
|
|
2145
|
+
issuer: string;
|
|
2146
|
+
jwksUri: string;
|
|
2147
|
+
audience: string;
|
|
2148
|
+
clientId: string;
|
|
2149
|
+
};
|
|
2150
|
+
consentTtlSeconds?: number;
|
|
2151
|
+
maxRedeemAttempts?: number;
|
|
2152
|
+
};
|
|
2153
|
+
type ModuleDescription = SsoDescription | CiamDescription | IamDescription | WorkloadDescription | SecretsDescription | KmsDescription | OtelDescription | AuthzDescription | TmDescription;
|
|
2154
|
+
type IoniteDescription = {
|
|
2155
|
+
id?: string;
|
|
2156
|
+
sdk: {
|
|
2157
|
+
version: string;
|
|
2158
|
+
catalogVersion: number;
|
|
2159
|
+
};
|
|
2160
|
+
basePath: string;
|
|
2161
|
+
urls: CapabilityEndpointUrls;
|
|
1738
2162
|
ok: boolean;
|
|
1739
|
-
/** Whether RemoteConfig has been applied at least once (mirrors `ion.isReady()`). */
|
|
1740
2163
|
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
2164
|
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;
|
|
2165
|
+
modules: Record<ModuleName, ModuleReadinessState & {
|
|
2166
|
+
description?: ModuleDescription;
|
|
1754
2167
|
}>;
|
|
1755
2168
|
};
|
|
2169
|
+
import { StandardSchemaV1 as StandardSchemaV14 } from "@standard-schema/spec";
|
|
1756
2170
|
/**
|
|
1757
2171
|
* Token caching for workload identity authentication.
|
|
1758
2172
|
*
|
|
@@ -1943,12 +2357,10 @@ type WorkloadConfigBase = {
|
|
|
1943
2357
|
*/
|
|
1944
2358
|
audience?: string;
|
|
1945
2359
|
/**
|
|
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.
|
|
2360
|
+
* Per-IdP intent (incoming/server role only): token claims from THIS trust anchor may satisfy
|
|
2361
|
+
* `has*` (audience-bound). ConfigSource-only. There is no global fallback.
|
|
1950
2362
|
*/
|
|
1951
|
-
|
|
2363
|
+
claimsAsEntitlements?: ClaimsAsEntitlements;
|
|
1952
2364
|
/**
|
|
1953
2365
|
* Default OAuth2 scopes (space-delimited)
|
|
1954
2366
|
*/
|
|
@@ -2058,21 +2470,10 @@ type ClientCredentialsWorkloadConfig = WorkloadConfigBase & {
|
|
|
2058
2470
|
*/
|
|
2059
2471
|
clientId: string;
|
|
2060
2472
|
/**
|
|
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.
|
|
2069
|
-
*/
|
|
2070
|
-
federatedTokenFile?: string;
|
|
2071
|
-
/**
|
|
2072
|
-
* `managed_identity`: get the token from the platform's managed identity endpoint instead of an
|
|
2073
|
-
* IdP token URL. `clientId` is the managed identity's client ID; `scope` names the audience.
|
|
2473
|
+
* OAuth2 client secret
|
|
2474
|
+
* REQUIRED for Client Credentials mode
|
|
2074
2475
|
*/
|
|
2075
|
-
|
|
2476
|
+
clientSecret: string;
|
|
2076
2477
|
};
|
|
2077
2478
|
/**
|
|
2078
2479
|
* Server-Only Workload Configuration
|
|
@@ -2106,7 +2507,7 @@ type ServerOnlyWorkloadConfig = WorkloadConfigBase & {
|
|
|
2106
2507
|
* detected based on which fields are present:
|
|
2107
2508
|
*
|
|
2108
2509
|
* - **JWT Bearer Grant**: Requires `workload_id` + `private_key`
|
|
2109
|
-
* - **Client Credentials**: Requires `client_id` + `client_secret
|
|
2510
|
+
* - **Client Credentials**: Requires `client_id` + `client_secret`
|
|
2110
2511
|
* - **Server-Only**: Only `jwks_uri` (and optionally `issuer`) for token validation
|
|
2111
2512
|
*
|
|
2112
2513
|
* The developer uses the same API regardless of mode - the library handles the details.
|
|
@@ -2135,8 +2536,8 @@ type TrustedIdp = {
|
|
|
2135
2536
|
* one of these values (with `azp` fallback). REQUIRED: prevents cross-app token reuse.
|
|
2136
2537
|
*/
|
|
2137
2538
|
audience: string | string[];
|
|
2138
|
-
/** Per-IdP
|
|
2139
|
-
|
|
2539
|
+
/** Per-IdP claims intent (see {@link WorkloadConfigBase.claimsAsEntitlements}). */
|
|
2540
|
+
claimsAsEntitlements?: ClaimsAsEntitlements;
|
|
2140
2541
|
};
|
|
2141
2542
|
/**
|
|
2142
2543
|
* Workload config with separate incoming (server) and outgoing (client) roles.
|
|
@@ -2179,6 +2580,8 @@ interface WorkloadGetToken {
|
|
|
2179
2580
|
* Workload Identity Authentication Interface
|
|
2180
2581
|
*/
|
|
2181
2582
|
type Workload = WorkloadConfig & ModuleReadiness & Required<Pick<ModuleReadiness, "isReady" | "ready">> & {
|
|
2583
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
2584
|
+
describe: () => WorkloadDescription;
|
|
2182
2585
|
/**
|
|
2183
2586
|
* Returns a token for this workload configuration.
|
|
2184
2587
|
* The optional argument overrides the configured default scope.
|
|
@@ -2193,7 +2596,9 @@ type Workload = WorkloadConfig & ModuleReadiness & Required<Pick<ModuleReadiness
|
|
|
2193
2596
|
/** Framework-agnostic request handler for the Workload module (token, validate, jwks, refresh). */
|
|
2194
2597
|
handler: (request: Request) => Promise<Response>;
|
|
2195
2598
|
};
|
|
2196
|
-
type WorkloadClient = Pick<Workload, "getToken" | "refreshToken" | "generateJWTAssertion" | "revokeToken" | "beforeChange" | "afterChange" | "isReady" | "ready"
|
|
2599
|
+
type WorkloadClient = Pick<Workload, "getToken" | "refreshToken" | "generateJWTAssertion" | "revokeToken" | "beforeChange" | "afterChange" | "isReady" | "ready"> & {
|
|
2600
|
+
describe(): WorkloadClientDescription;
|
|
2601
|
+
};
|
|
2197
2602
|
/**
|
|
2198
2603
|
* SCIM Error response structure
|
|
2199
2604
|
*/
|
|
@@ -2251,7 +2656,8 @@ interface IAMHandlerConfig {
|
|
|
2251
2656
|
* IAM configuration
|
|
2252
2657
|
*
|
|
2253
2658
|
* - If `url` is provided, groups_outbound is enabled (app calls external IAM)
|
|
2254
|
-
* - If a
|
|
2659
|
+
* - If a catalog source is provided, groups_inbound is enabled (external IAM calls app);
|
|
2660
|
+
* `POST /Groups` additionally requires `AuthzConfig.onInboundEntitlement`
|
|
2255
2661
|
* - If `userStore` is provided, users_inbound is enabled (external IAM calls app)
|
|
2256
2662
|
*/
|
|
2257
2663
|
type IAMConfig = {
|
|
@@ -2367,6 +2773,7 @@ type IAMAccessRequestsConfig = {
|
|
|
2367
2773
|
request: AccessRequestResult;
|
|
2368
2774
|
created: boolean;
|
|
2369
2775
|
}>;
|
|
2776
|
+
get?: (id: string) => Promise<AccessRequestResult | undefined>;
|
|
2370
2777
|
};
|
|
2371
2778
|
type IAMEntitlementRequestUrlContext = {
|
|
2372
2779
|
request: Request;
|
|
@@ -2595,7 +3002,7 @@ type IAMGroupsOutbound = {
|
|
|
2595
3002
|
};
|
|
2596
3003
|
/**
|
|
2597
3004
|
* Groups Inbound extension - for receiving group provisioning from external IAM providers.
|
|
2598
|
-
* Enabled when a
|
|
3005
|
+
* Enabled when a catalog source is configured; IAM-sourced create remains AppDev opt-in.
|
|
2599
3006
|
*/
|
|
2600
3007
|
type IAMGroupsInbound = {
|
|
2601
3008
|
/**
|
|
@@ -2620,10 +3027,12 @@ type IAMUsersInbound = {
|
|
|
2620
3027
|
*
|
|
2621
3028
|
* - Core functions are user-related (outbound to external IAM)
|
|
2622
3029
|
* - `groups_outbound` is available when `url` is configured
|
|
2623
|
-
* - `groups_inbound` is available when a
|
|
3030
|
+
* - `groups_inbound` is available when a catalog source is configured
|
|
2624
3031
|
* - `users_inbound` is available when `userStore` is configured
|
|
2625
3032
|
*/
|
|
2626
3033
|
type IAM = Omit<IAMConfig, "users" | "workloads" | "customers" | "groups"> & {
|
|
3034
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
3035
|
+
describe: () => IamDescription;
|
|
2627
3036
|
users: IamPrincipalKind;
|
|
2628
3037
|
workloads: IamPrincipalKind;
|
|
2629
3038
|
customers: IamPrincipalKind;
|
|
@@ -2646,7 +3055,8 @@ type IAM = Omit<IAMConfig, "users" | "workloads" | "customers" | "groups"> & {
|
|
|
2646
3055
|
groups_outbound?: IAMGroupsOutbound;
|
|
2647
3056
|
/**
|
|
2648
3057
|
* Groups Inbound extension - receive group provisioning from external IAM.
|
|
2649
|
-
* Available when a
|
|
3058
|
+
* Available when a catalog source is configured. `POST /Groups` returns 501 unless the App
|
|
3059
|
+
* implements `AuthzConfig.onInboundEntitlement` and wires an `AccessCatalogStore`.
|
|
2650
3060
|
*/
|
|
2651
3061
|
groups_inbound?: IAMGroupsInbound;
|
|
2652
3062
|
/**
|
|
@@ -2808,6 +3218,8 @@ type KmsPoolSlot = {
|
|
|
2808
3218
|
ready(timeout?: number): Promise<void>;
|
|
2809
3219
|
};
|
|
2810
3220
|
type KmsPool = {
|
|
3221
|
+
/** Secret-free, JSON-serializable pool configuration and readiness summary. */
|
|
3222
|
+
describe(): KmsPoolDescription;
|
|
2811
3223
|
/**
|
|
2812
3224
|
* Returns the current granted key for slot 0. Calls wait on one shared local subscription until a
|
|
2813
3225
|
* grant is available; repeated calls resolve from the local cache and never initiate a vault request.
|
|
@@ -2840,6 +3252,8 @@ type KmsPool = {
|
|
|
2840
3252
|
* (`ion.kms.<name>`); use `getPool(name)` when the name is dynamic.
|
|
2841
3253
|
*/
|
|
2842
3254
|
type Kms = ModuleReadiness & {
|
|
3255
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
3256
|
+
describe(): KmsDescription;
|
|
2843
3257
|
readonly config: Readonly<KmsConfig>;
|
|
2844
3258
|
listPools(): string[];
|
|
2845
3259
|
getPool(name: string): KmsPool;
|
|
@@ -2850,91 +3264,6 @@ type Kms = ModuleReadiness & {
|
|
|
2850
3264
|
declare function parseKmsPoolDocument(value: unknown): KmsPoolDocument;
|
|
2851
3265
|
/** Parse and fail closed on a vault-stored KMS key-material document. */
|
|
2852
3266
|
declare function parseKmsPoolControlDocument(value: unknown): KmsPoolControlDocument;
|
|
2853
|
-
type OtelSignalName = "traces" | "metrics" | "logs";
|
|
2854
|
-
type OtelProtocol = "http/protobuf" | "http/json";
|
|
2855
|
-
type OtelProviderType = "otlp" | "grafana-lgtm" | "datadog" | "splunk" | "elastic";
|
|
2856
|
-
type OtelLogLevel = "trace" | "debug" | "info" | "warn" | "error";
|
|
2857
|
-
type OtelLevels = Partial<Record<OtelLogLevel, boolean>>;
|
|
2858
|
-
/** Local console mirror policy: disable it or set its minimum emitted severity. */
|
|
2859
|
-
type OtelConsoleMode = "off" | OtelLogLevel;
|
|
2860
|
-
type OtelAttributeValue = string | number | boolean | string[] | number[] | boolean[];
|
|
2861
|
-
type OtelAttributes = Record<string, OtelAttributeValue>;
|
|
2862
|
-
type OtelSignalConfig = {
|
|
2863
|
-
/** Per-signal OTLP endpoint. When omitted, the module appends /v1/{signal} to `endpoint`. */
|
|
2864
|
-
endpoint?: string;
|
|
2865
|
-
headers?: Record<string, string>;
|
|
2866
|
-
timeoutMillis?: number;
|
|
2867
|
-
concurrencyLimit?: number;
|
|
2868
|
-
};
|
|
2869
|
-
type OtelMetricsSignalConfig = OtelSignalConfig & {
|
|
2870
|
-
exportIntervalMillis?: number;
|
|
2871
|
-
exportTimeoutMillis?: number;
|
|
2872
|
-
};
|
|
2873
|
-
type OtelOAuthClientCredentialsConfig = {
|
|
2874
|
-
tokenUrl: string;
|
|
2875
|
-
clientId: string;
|
|
2876
|
-
clientSecret: string;
|
|
2877
|
-
scope?: string;
|
|
2878
|
-
audience?: string;
|
|
2879
|
-
headers?: Record<string, string>;
|
|
2880
|
-
};
|
|
2881
|
-
type OtelLogRecord = {
|
|
2882
|
-
severityNumber?: number;
|
|
2883
|
-
severityText?: string;
|
|
2884
|
-
body?: unknown;
|
|
2885
|
-
attributes?: Record<string, unknown>;
|
|
2886
|
-
};
|
|
2887
|
-
/**
|
|
2888
|
-
* OpenTelemetry config supplied by ConfigSource/RemoteConfig.
|
|
2889
|
-
* Keep environment-specific URLs and credentials here, not in FrameworkConfig.
|
|
2890
|
-
*/
|
|
2891
|
-
type OtelConfig = {
|
|
2892
|
-
type?: OtelProviderType;
|
|
2893
|
-
name: string;
|
|
2894
|
-
endpoint?: string;
|
|
2895
|
-
protocol?: OtelProtocol;
|
|
2896
|
-
headers?: Record<string, string>;
|
|
2897
|
-
apiKey?: string;
|
|
2898
|
-
/** Name of a `RemoteConfig.kms` key pool used for exporter authentication. */
|
|
2899
|
-
apiKeyPool?: string;
|
|
2900
|
-
apiKeyHeader?: string;
|
|
2901
|
-
oauth?: OtelOAuthClientCredentialsConfig;
|
|
2902
|
-
version?: string;
|
|
2903
|
-
deploymentEnvironment?: string;
|
|
2904
|
-
resourceAttributes?: OtelAttributes;
|
|
2905
|
-
levels?: OtelLevels;
|
|
2906
|
-
/** `'off'` exports only to OTel; a level dual-emits at or above that severity. Defaults to `'info'`. */
|
|
2907
|
-
console?: OtelConsoleMode;
|
|
2908
|
-
traces?: boolean | OtelSignalConfig;
|
|
2909
|
-
metrics?: boolean | OtelMetricsSignalConfig;
|
|
2910
|
-
logs?: boolean | OtelSignalConfig;
|
|
2911
|
-
};
|
|
2912
|
-
/**
|
|
2913
|
-
* OpenTelemetry app/runtime wiring supplied by code.
|
|
2914
|
-
* Instrumentation instances and callbacks live here because they are framework-specific code.
|
|
2915
|
-
*/
|
|
2916
|
-
type FrameworkOtelConfig = {
|
|
2917
|
-
levels?: OtelLevels;
|
|
2918
|
-
instrument?: unknown[];
|
|
2919
|
-
/** Optional app-owned destination/renderer for records admitted by `RemoteConfig.otel.console`. */
|
|
2920
|
-
console?: (record: OtelLogRecord) => void;
|
|
2921
|
-
spanProcessors?: unknown[];
|
|
2922
|
-
metricReaders?: unknown[];
|
|
2923
|
-
logRecordProcessors?: unknown[];
|
|
2924
|
-
sampler?: unknown;
|
|
2925
|
-
textMapPropagator?: unknown;
|
|
2926
|
-
contextManager?: unknown;
|
|
2927
|
-
configure?: (options: Record<string, unknown>) => Record<string, unknown> | void;
|
|
2928
|
-
};
|
|
2929
|
-
type Otel = {
|
|
2930
|
-
beforeChange(listener: ChangeListener): () => void;
|
|
2931
|
-
afterChange(listener: ChangeListener): () => void;
|
|
2932
|
-
isReady(): boolean;
|
|
2933
|
-
ready(timeout?: number): Promise<void>;
|
|
2934
|
-
logger: Logger;
|
|
2935
|
-
forceFlush(): Promise<void>;
|
|
2936
|
-
shutdown(): Promise<void>;
|
|
2937
|
-
};
|
|
2938
3267
|
/**
|
|
2939
3268
|
* Session management for tracking user sessions and enabling backchannel logout.
|
|
2940
3269
|
*
|
|
@@ -3027,6 +3356,12 @@ type Session<TExtended = object> = {
|
|
|
3027
3356
|
*/
|
|
3028
3357
|
claims?: Record<string, unknown>;
|
|
3029
3358
|
/**
|
|
3359
|
+
* Entitlements derived from token claims at login and refresh. Session-scoped: they die with the
|
|
3360
|
+
* record (TTL, rotation, back-channel logout) and are never written to the access stores.
|
|
3361
|
+
* Only meaningful when the store declares {@link SessionStoreCapabilities.derivedEntitlements}.
|
|
3362
|
+
*/
|
|
3363
|
+
entitlements?: DerivedEntitlement[];
|
|
3364
|
+
/**
|
|
3030
3365
|
* Optional access-token claims for modules that keep access/id claims separate.
|
|
3031
3366
|
*/
|
|
3032
3367
|
accessClaims?: Record<string, unknown>;
|
|
@@ -3063,7 +3398,21 @@ type Session<TExtended = object> = {
|
|
|
3063
3398
|
* }
|
|
3064
3399
|
* ```
|
|
3065
3400
|
*/
|
|
3401
|
+
/**
|
|
3402
|
+
* Store-declared capabilities. The SDK does not probe a custom store (a write at init is forbidden);
|
|
3403
|
+
* a store that omits the declaration is treated as incapable.
|
|
3404
|
+
*/
|
|
3405
|
+
type SessionStoreCapabilities = {
|
|
3406
|
+
/**
|
|
3407
|
+
* The store persists {@link Session.entitlements} round-trip. JSON-backed stores (the SDK Redis
|
|
3408
|
+
* and in-memory implementations) declare this. A column-mapped SQL store declares it only after
|
|
3409
|
+
* it has a column for the derived set.
|
|
3410
|
+
*/
|
|
3411
|
+
derivedEntitlements?: boolean;
|
|
3412
|
+
};
|
|
3066
3413
|
interface SessionStore<TExtended = object> {
|
|
3414
|
+
/** Declaration of what this store persists beyond the required session fields. */
|
|
3415
|
+
readonly capabilities?: SessionStoreCapabilities;
|
|
3067
3416
|
/**
|
|
3068
3417
|
* Create a new session in the store.
|
|
3069
3418
|
*
|
|
@@ -3396,6 +3745,13 @@ type SSOConfig<
|
|
|
3396
3745
|
*/
|
|
3397
3746
|
userStore?: UserStore<TUserData>;
|
|
3398
3747
|
/**
|
|
3748
|
+
* ConfigSource-only. When set, the named token claims are derived into session-scoped
|
|
3749
|
+
* entitlements at login and refresh. Never set from application code.
|
|
3750
|
+
*/
|
|
3751
|
+
claimsAsEntitlements?: ClaimsAsEntitlements;
|
|
3752
|
+
/** ConfigSource-only IdP assignment workflow used when IAM assignment is `'idp'`. */
|
|
3753
|
+
accessRequests?: AccessRequestsDestination;
|
|
3754
|
+
/**
|
|
3399
3755
|
* Enable Just-In-Time (JIT) user provisioning.
|
|
3400
3756
|
* When enabled, new users are automatically created in the userStore on their first login.
|
|
3401
3757
|
* When disabled (default), only existing users in the userStore are updated on login.
|
|
@@ -3495,6 +3851,8 @@ type SSO<
|
|
|
3495
3851
|
TSessionData = Record<string, never>,
|
|
3496
3852
|
TUserData = Record<string, never>
|
|
3497
3853
|
> = SSOConfig<TSessionData, TUserData> & {
|
|
3854
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
3855
|
+
describe: () => SsoDescription;
|
|
3498
3856
|
getUser: (request: Request) => Promise<WorkforceUser | undefined>;
|
|
3499
3857
|
/**
|
|
3500
3858
|
* Degraded-aware resolution: distinguishes a signed-out visitor (`unauthenticated`) from a failed
|
|
@@ -3842,7 +4200,12 @@ type SecretsValidators = {
|
|
|
3842
4200
|
*/
|
|
3843
4201
|
validateSourceConfig?(sourceName: string, config: SecretsSourceConfig): void;
|
|
3844
4202
|
};
|
|
4203
|
+
type DescribedSecretsSource = SecretsSource & {
|
|
4204
|
+
describe(): SecretsSourceDescription;
|
|
4205
|
+
};
|
|
3845
4206
|
type Secrets = ModuleReadiness & {
|
|
4207
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
4208
|
+
describe(): SecretsDescription;
|
|
3846
4209
|
/**
|
|
3847
4210
|
* Liveness across configured sources. Returns false when any ready source reports a degraded
|
|
3848
4211
|
* `isAvailable()` (e.g. an HTTP-poll source whose upstream is failing). Surfaced in
|
|
@@ -3854,7 +4217,7 @@ type Secrets = ModuleReadiness & {
|
|
|
3854
4217
|
/** Returns configured secrets source names/keys. */
|
|
3855
4218
|
listSecretsSources(): string[];
|
|
3856
4219
|
/** Gets a named secrets source client. Throws when missing. */
|
|
3857
|
-
getSecretsSource(sourceName: string):
|
|
4220
|
+
getSecretsSource(sourceName: string): DescribedSecretsSource;
|
|
3858
4221
|
/** Creates a lazy handle for a secret in a named source. */
|
|
3859
4222
|
get(sourceName: string, path: string, options?: SecretsOperationOptions): SecretHandle;
|
|
3860
4223
|
/** Reads a secret from a named secrets source client. */
|
|
@@ -4304,17 +4667,6 @@ type TrustedProvisioningClient = {
|
|
|
4304
4667
|
type AuthzConfig = {
|
|
4305
4668
|
oaa?: AuthzOaaConfig;
|
|
4306
4669
|
/**
|
|
4307
|
-
* RemoteConfig/Ops-governed intent. When `true`, the request-level `has*` helpers auto-honor a
|
|
4308
|
-
* principal's OAuth token `scope` claims as entitlements: an app-wide check (no `resource` arg)
|
|
4309
|
-
* also allows when the target id matches a granted scope. Default `false` (secure): scopes never
|
|
4310
|
-
* satisfy `has*` and authorization comes solely from the `AccessAssignmentStore`/`AccessIndex` (IAM/SCIM).
|
|
4311
|
-
* Read at check time so it can be flipped live. This NEVER affects token validation, and the
|
|
4312
|
-
* explicit `hasScope*` helpers are always available regardless of this flag. Resource-scoped
|
|
4313
|
-
* checks (a `resource` arg supplied) are never satisfied by scopes. For workload principals this is
|
|
4314
|
-
* a fallback only: a matched trusted IdP's per-entry `scopesAsEntitlements` takes precedence.
|
|
4315
|
-
*/
|
|
4316
|
-
scopesAsEntitlements?: boolean;
|
|
4317
|
-
/**
|
|
4318
4670
|
* Config-declared trusted provisioning clients (read-path overlay; ConfigSource/ECI-owned). Each
|
|
4319
4671
|
* entry pre-authorizes a workload client to hold specific permissions without a stored grant. See
|
|
4320
4672
|
* {@link TrustedProvisioningClient}. Honored in the request-level `has*` helpers BEFORE the
|
|
@@ -4364,6 +4716,12 @@ type AuthzConfig = {
|
|
|
4364
4716
|
* have been updated. Best-effort and isolated — throwing here never affects the SCIM response.
|
|
4365
4717
|
*/
|
|
4366
4718
|
onAccessMutation?: (summary: ScimMutationSummary) => void;
|
|
4719
|
+
/**
|
|
4720
|
+
* Explicit AppDev opt-in for IAM-sourced entitlement definitions. Inbound SCIM `POST /Groups`
|
|
4721
|
+
* returns 501 when omitted. The callback may reject the proposal or accept it while attaching
|
|
4722
|
+
* App-owned catalog structure; IAM-owned presentation is persisted from the SCIM resource.
|
|
4723
|
+
*/
|
|
4724
|
+
onInboundEntitlement?: (input: InboundEntitlementRequest) => InboundEntitlementDecision | Promise<InboundEntitlementDecision>;
|
|
4367
4725
|
};
|
|
4368
4726
|
/**
|
|
4369
4727
|
* Configuration supplied by the framework/application when creating an ionite instance.
|
|
@@ -4395,11 +4753,11 @@ type FrameworkConfig = {
|
|
|
4395
4753
|
* `afterLogout` callbacks, which are code-only and therefore kept. RemoteConfig-only intent flags (e.g. IAM `users`/`groups`
|
|
4396
4754
|
* enablement) are also stripped from code.
|
|
4397
4755
|
*/
|
|
4398
|
-
type SSOConfigFromCode = Omit<SSOConfig, "loginUrl" | "userUrl" | "logoutUrl" | "logoutBackChannelUrl" | "refreshUrl" | "redirectUri">;
|
|
4756
|
+
type SSOConfigFromCode = Omit<SSOConfig, "loginUrl" | "userUrl" | "logoutUrl" | "logoutBackChannelUrl" | "refreshUrl" | "redirectUri" | "claimsAsEntitlements" | "accessRequests">;
|
|
4399
4757
|
type IAMConfigFromCode = Omit<IAMConfig, "usersUrl" | "groupsUrl" | "workloadsUrl" | "customersUrl" | "users" | "workloads" | "customers" | "groups" | "discovery" | "deltaAudience"> & {
|
|
4400
4758
|
discovery?: Omit<IAMDiscoveryConfig, "basePath">;
|
|
4401
4759
|
};
|
|
4402
|
-
type WorkloadServerConfigFromCode = Omit<Partial<WorkloadConfig>, "tokenUrl" | "validateUrl" | "jwksUrl" | "refreshUrl">;
|
|
4760
|
+
type WorkloadServerConfigFromCode = Omit<Partial<WorkloadConfig>, "tokenUrl" | "validateUrl" | "jwksUrl" | "refreshUrl" | "claimsAsEntitlements">;
|
|
4403
4761
|
type FrameworkWorkloadConfigFromCode = WorkloadServerConfigFromCode | {
|
|
4404
4762
|
incoming?: WorkloadServerConfigFromCode;
|
|
4405
4763
|
outgoing?: FrameworkWorkloadIncomingOutgoing["outgoing"];
|
|
@@ -4445,7 +4803,7 @@ type RemoteConfig = {
|
|
|
4445
4803
|
/** OpenTelemetry collector/exporter config loaded from ConfigSource. */
|
|
4446
4804
|
otel?: OtelConfig;
|
|
4447
4805
|
authz?: AuthzConfig;
|
|
4448
|
-
/** ConfigSource-owned Tenant Management activation and trusted
|
|
4806
|
+
/** ConfigSource-owned Tenant Management activation and trusted ionite identity. */
|
|
4449
4807
|
tm?: RemoteTmConfig;
|
|
4450
4808
|
/**
|
|
4451
4809
|
* Built-in readiness endpoint intent (Ops/ECI). The SDK mounts `${basePath}/readyz` by default;
|
|
@@ -4818,6 +5176,8 @@ type CIAM<
|
|
|
4818
5176
|
TMagicLinkData = Record<string, never>,
|
|
4819
5177
|
TCustomerData = Record<string, never>
|
|
4820
5178
|
> = CIAMConfig<TMagicLinkData, TCustomerData> & {
|
|
5179
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
5180
|
+
describe: () => CiamDescription;
|
|
4821
5181
|
getCustomer: (request: Request) => Promise<Customer | undefined>;
|
|
4822
5182
|
/**
|
|
4823
5183
|
* Degraded-aware resolution: distinguishes a signed-out visitor (`unauthenticated`) from a failed
|
|
@@ -4961,6 +5321,15 @@ type IoniteBase = {
|
|
|
4961
5321
|
* module is ready; `notReady` lists the requested modules that are not ready, with reasons.
|
|
4962
5322
|
*/
|
|
4963
5323
|
requireReady(names: ModuleName[]): RequireReadyResult;
|
|
5324
|
+
/**
|
|
5325
|
+
* Returns an allow-listed, JSON-serializable snapshot for privileged App-owned diagnostics.
|
|
5326
|
+
* Unlike `config`, this never contains credentials, secret values, stores, or callbacks.
|
|
5327
|
+
*
|
|
5328
|
+
* Diagnostics only: each call rebuilds the readiness report and every module projection. Call it
|
|
5329
|
+
* from an admin loader, never per request; handlers and health probes use `isReady()` /
|
|
5330
|
+
* `requireReady()`.
|
|
5331
|
+
*/
|
|
5332
|
+
describe(): IoniteDescription;
|
|
4964
5333
|
/** Most recent RemoteConfig application outcome (last applied time and last error, if any). */
|
|
4965
5334
|
configStatus: ConfigApplyStatus;
|
|
4966
5335
|
/** Release config subscriptions and background resources. */
|
|
@@ -4981,8 +5350,8 @@ type ResolvedRoute = {
|
|
|
4981
5350
|
/**
|
|
4982
5351
|
* Authorization required to invoke this route. When set, the router enforces it (deny-by-default)
|
|
4983
5352
|
* before the handler runs: the caller must hold the {@link EndpointPermission.permission} as a
|
|
4984
|
-
* granted entitlement, or
|
|
4985
|
-
*
|
|
5353
|
+
* granted entitlement, or a claim-derived entitlement from the issuing IdP's `claimsAsEntitlements`
|
|
5354
|
+
* block. Login/public/discovery routes omit it.
|
|
4986
5355
|
*
|
|
4987
5356
|
* Three states, chosen so a custom `resolve` cannot silently drop authorization by omission:
|
|
4988
5357
|
* - a permission object → enforce it;
|
|
@@ -5046,7 +5415,10 @@ type ConfigChangeOptions = {
|
|
|
5046
5415
|
type EnvironmentType = "POC" | "DEV" | "QA" | "PROD";
|
|
5047
5416
|
type TenantStatus = "pending" | "processing" | "completed" | "failed" | "action_required";
|
|
5048
5417
|
type CreateTenantRequestBase = {
|
|
5418
|
+
/** App-owned routing key. ionite may suggest it; the App may reject a collision. */
|
|
5049
5419
|
id: string;
|
|
5420
|
+
/** Stable tenant id in the ionite domain. */
|
|
5421
|
+
ioniteId: string;
|
|
5050
5422
|
companyId: string;
|
|
5051
5423
|
companyName: string;
|
|
5052
5424
|
environmentType: EnvironmentType;
|
|
@@ -5058,8 +5430,9 @@ type CreateTenantRequestBase = {
|
|
|
5058
5430
|
};
|
|
5059
5431
|
/**
|
|
5060
5432
|
* Body for creating a tenant (`POST ${basePath}`). `configLocator` may be supplied immediately or
|
|
5061
|
-
* patched later after the tenant's ConfigSource has been provisioned. Idempotent by
|
|
5062
|
-
* re-submitting
|
|
5433
|
+
* patched later after the tenant's ConfigSource has been provisioned. Idempotent by
|
|
5434
|
+
* `ioniteId`: re-submitting that id re-applies the existing App tenant even when its
|
|
5435
|
+
* App-owned `id` differs from ionite's original suggestion.
|
|
5063
5436
|
*/
|
|
5064
5437
|
type CreateTenantRequest<TExtended extends object = object> = CreateTenantRequestBase & TExtended;
|
|
5065
5438
|
/**
|
|
@@ -5133,7 +5506,10 @@ type TenantValidators<
|
|
|
5133
5506
|
};
|
|
5134
5507
|
declare function isConfigLocator(value: unknown): value is ConfigLocator;
|
|
5135
5508
|
type BaseTenant = {
|
|
5509
|
+
/** App-owned routing key. */
|
|
5136
5510
|
id: string;
|
|
5511
|
+
/** Stable tenant id in the ionite domain, once this tenant is known to ionite. */
|
|
5512
|
+
ioniteId?: string;
|
|
5137
5513
|
companyId: string;
|
|
5138
5514
|
companyName: string;
|
|
5139
5515
|
environmentType: EnvironmentType;
|
|
@@ -5155,7 +5531,7 @@ type BaseTenant = {
|
|
|
5155
5531
|
*/
|
|
5156
5532
|
configLocator?: ConfigLocator;
|
|
5157
5533
|
/**
|
|
5158
|
-
* App-internal state for an
|
|
5534
|
+
* App-internal state for an ionite-requested Tenant Management handover. Protocol-internal
|
|
5159
5535
|
* fields are never serialized by the TM wire handlers.
|
|
5160
5536
|
*/
|
|
5161
5537
|
integration?: TenantIntegration;
|
|
@@ -5163,9 +5539,8 @@ type BaseTenant = {
|
|
|
5163
5539
|
type TenantIntegrationStatus = "consent_requested" | "consented" | "declined";
|
|
5164
5540
|
type TenantIntegration = {
|
|
5165
5541
|
version: number;
|
|
5166
|
-
|
|
5167
|
-
|
|
5168
|
-
integratorTenantId: string;
|
|
5542
|
+
ioniteName?: string;
|
|
5543
|
+
ioniteId: string;
|
|
5169
5544
|
productId: string;
|
|
5170
5545
|
applicationId: string;
|
|
5171
5546
|
handleHash: string;
|
|
@@ -5189,26 +5564,36 @@ type SetTenantIntegrationOptions = {
|
|
|
5189
5564
|
/** Compare-and-set guard for transitions within the same handle. */
|
|
5190
5565
|
expectedVersion?: number;
|
|
5191
5566
|
};
|
|
5192
|
-
|
|
5567
|
+
/**
|
|
5568
|
+
* ConfigSource-only trust for the ionite control plane that drives Tenant Management. Code never
|
|
5569
|
+
* sets these fields; do not duplicate them in `workload.incoming` or `authz.trustedProvisioningClients`.
|
|
5570
|
+
*/
|
|
5571
|
+
type TmIoniteConfig = {
|
|
5572
|
+
/** Stable identifier of the trusted ionite control plane. */
|
|
5193
5573
|
id: string;
|
|
5574
|
+
/** Optional human-readable name used in consent copy. */
|
|
5194
5575
|
name?: string;
|
|
5576
|
+
/** Browser-facing ionite URL used to restart an integration. */
|
|
5195
5577
|
url: string;
|
|
5578
|
+
/** Required `iss` claim on ionite-signed staged-request handles and ionite workload tokens. */
|
|
5196
5579
|
issuer: string;
|
|
5580
|
+
/** ionite JWKS endpoint used to verify signed staged-request handles. */
|
|
5197
5581
|
jwksUri: string;
|
|
5582
|
+
/** Required `aud` claim binding an ionite-staged request to this App. */
|
|
5198
5583
|
audience: string;
|
|
5584
|
+
/** Required `azp`/client identity of the trusted ionite control plane. */
|
|
5199
5585
|
clientId: string;
|
|
5200
5586
|
};
|
|
5201
5587
|
type RemoteTmConfig = {
|
|
5202
5588
|
enabled: true;
|
|
5203
|
-
|
|
5589
|
+
ionite: TmIoniteConfig;
|
|
5204
5590
|
consentTtlSeconds?: number;
|
|
5205
5591
|
maxRedeemAttempts?: number;
|
|
5206
5592
|
};
|
|
5207
5593
|
type StagedIntegration = {
|
|
5208
5594
|
handle: string;
|
|
5209
|
-
|
|
5210
|
-
|
|
5211
|
-
integratorTenantId: string;
|
|
5595
|
+
ioniteName?: string;
|
|
5596
|
+
ioniteId: string;
|
|
5212
5597
|
productId: string;
|
|
5213
5598
|
applicationId: string;
|
|
5214
5599
|
issuedAt: string;
|
|
@@ -5240,9 +5625,15 @@ type FrameworkTmConfig<TTenant extends BaseTenant = BaseTenant> = {
|
|
|
5240
5625
|
exportConfig?: (context: {
|
|
5241
5626
|
tenant: TTenant;
|
|
5242
5627
|
}) => ConfigExportEnvelope | Promise<ConfigExportEnvelope>;
|
|
5628
|
+
/**
|
|
5629
|
+
* Runs after a consented tenant runtime has successfully applied config through the newly
|
|
5630
|
+
* persisted destination locator. Cleanup must be idempotent because another App replica may
|
|
5631
|
+
* observe the same handover concurrently.
|
|
5632
|
+
*/
|
|
5243
5633
|
onHandoverApplied?: (context: {
|
|
5244
5634
|
tenant: TTenant;
|
|
5245
5635
|
previousLocator?: ConfigLocator;
|
|
5636
|
+
destinationLocator: ConfigLocator;
|
|
5246
5637
|
}) => void | Promise<void>;
|
|
5247
5638
|
/** 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. */
|
|
5248
5639
|
onTenantCreated?: (context: {
|
|
@@ -5272,6 +5663,8 @@ type TenantIntegrationView = {
|
|
|
5272
5663
|
integration: TenantIntegration;
|
|
5273
5664
|
};
|
|
5274
5665
|
type TenantManagement<TTenant extends BaseTenant = BaseTenant> = ModuleReadiness & {
|
|
5666
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
5667
|
+
describe(): TmDescription;
|
|
5275
5668
|
handler(request: Request): Promise<Response>;
|
|
5276
5669
|
getTenant(id: string): Promise<TTenant | undefined>;
|
|
5277
5670
|
recordConsent(input: RecordTenantConsentInput): Promise<TTenant>;
|
|
@@ -5327,6 +5720,19 @@ interface TenantDirectory<TTenant extends BaseTenant = BaseTenant> {
|
|
|
5327
5720
|
findUserTenants?(identity: TenantDirectoryIdentity, options?: ListOptions): Promise<ListResult<TTenant>>;
|
|
5328
5721
|
findTenantsByEmailDomain?(domain: string, options?: ListOptions): Promise<ListResult<TTenant>>;
|
|
5329
5722
|
}
|
|
5723
|
+
/**
|
|
5724
|
+
* App-owned tenant persistence for routing and Tenant Management.
|
|
5725
|
+
*
|
|
5726
|
+
* Tenants carry two ids: `id` is the App-owned routing key and `ioniteId` is ionite's stable id.
|
|
5727
|
+
* Implementations MUST keep `ioniteId` unique across tenants and MUST treat it as immutable once
|
|
5728
|
+
* set: `upsert` and `setIntegration` reject a different `ioniteId` for a bound tenant (the
|
|
5729
|
+
* built-in in-memory and Redis stores throw `ionite id cannot change`) and an `upsert` that omits
|
|
5730
|
+
* `ioniteId` keeps the stored value. The TM handler enforces the same rule at the HTTP layer; the
|
|
5731
|
+
* store rule protects App-owned write paths that bypass `ion.tm`.
|
|
5732
|
+
*
|
|
5733
|
+
* `setIntegration` and `getByIntegrationHandleHash` are required only for ionite consent. They are
|
|
5734
|
+
* metadata-only writes and MUST NOT evict the tenant runtime cache; ordinary `upsert`/`delete` do.
|
|
5735
|
+
*/
|
|
5330
5736
|
interface TenantStore<TTenant extends BaseTenant = BaseTenant> {
|
|
5331
5737
|
get(id: string): Promise<TTenant | undefined>;
|
|
5332
5738
|
list(options?: ListOptions): Promise<ListResult<TTenant>>;
|
|
@@ -5335,6 +5741,8 @@ interface TenantStore<TTenant extends BaseTenant = BaseTenant> {
|
|
|
5335
5741
|
getIon(id: string): Promise<Ionite | undefined>;
|
|
5336
5742
|
setIntegration?(tenantId: string, integration: TenantIntegration | undefined, options?: SetTenantIntegrationOptions): Promise<TTenant | undefined>;
|
|
5337
5743
|
getByIntegrationHandleHash?(handleHash: string): Promise<TTenant | undefined>;
|
|
5744
|
+
/** Looks up a tenant by ionite's stable id; TM create is idempotent by this key. */
|
|
5745
|
+
getByIoniteId(ioniteId: string): Promise<TTenant | undefined>;
|
|
5338
5746
|
}
|
|
5339
5747
|
type InMemoryTenantStoreOptions = {
|
|
5340
5748
|
/**
|
|
@@ -5559,6 +5967,35 @@ type OaaAccessTargetType = "group" | "role" | "permission";
|
|
|
5559
5967
|
type EntitlementType = OaaAccessTargetType;
|
|
5560
5968
|
/** A catalog Entitlement: a group, role, or permission (see {@link EntitlementType}). */
|
|
5561
5969
|
type Entitlement<TAttributes extends object = object> = Group<TAttributes> | Role<TAttributes> | Permission<TAttributes>;
|
|
5970
|
+
/** Validated IAM-authored presentation and membership proposed through inbound SCIM `POST /Groups`. */
|
|
5971
|
+
type InboundEntitlementRequest = {
|
|
5972
|
+
type: EntitlementType;
|
|
5973
|
+
displayName: string;
|
|
5974
|
+
description?: string;
|
|
5975
|
+
externalId?: string;
|
|
5976
|
+
riskLevel?: RiskLevel;
|
|
5977
|
+
attributes?: Record<string, unknown>;
|
|
5978
|
+
resources?: string[];
|
|
5979
|
+
members: GroupMember[];
|
|
5980
|
+
request: Request;
|
|
5981
|
+
};
|
|
5982
|
+
/**
|
|
5983
|
+
* AppDev decision for an IAM-sourced entitlement. Accepting may attach only App-owned structure;
|
|
5984
|
+
* IAM-owned presentation remains sourced from the inbound SCIM resource.
|
|
5985
|
+
*/
|
|
5986
|
+
type InboundEntitlementDecision = {
|
|
5987
|
+
accept: false;
|
|
5988
|
+
reason?: string;
|
|
5989
|
+
} | {
|
|
5990
|
+
accept: true;
|
|
5991
|
+
id?: string;
|
|
5992
|
+
assignableSubjectTypes?: SubjectType[];
|
|
5993
|
+
recommendedSubjectTypes?: SubjectType[];
|
|
5994
|
+
permissions?: string[];
|
|
5995
|
+
roles?: string[];
|
|
5996
|
+
groups?: string[];
|
|
5997
|
+
resources?: string[];
|
|
5998
|
+
};
|
|
5562
5999
|
declare const ION_AUTHZ_GROUP_SCHEMA = "urn:ionite:params:scim:schemas:extension:authz:2.0:Group";
|
|
5563
6000
|
type AuthzScimGroupType = OaaAccessTargetType;
|
|
5564
6001
|
type AuthzScimGroupExtension = {
|
|
@@ -5948,6 +6385,8 @@ interface OaaClient<
|
|
|
5948
6385
|
TCustomer = BaseCustomer,
|
|
5949
6386
|
TWorkload = BaseWorkloadIdentity
|
|
5950
6387
|
> {
|
|
6388
|
+
/** Secret-free, JSON-serializable OAA configuration and readiness summary. */
|
|
6389
|
+
describe(): OaaDescription;
|
|
5951
6390
|
pushUser(user: TUser): Promise<void>;
|
|
5952
6391
|
pushCustomer(customer: TCustomer): Promise<void>;
|
|
5953
6392
|
pushWorkload(workload: TWorkload): Promise<void>;
|
|
@@ -6066,6 +6505,8 @@ type ReconcileReport = {
|
|
|
6066
6505
|
* wired they deny by default (`{ allow: false }`, `metadata.reason = 'access_index_not_configured'`).
|
|
6067
6506
|
*/
|
|
6068
6507
|
type Authz = {
|
|
6508
|
+
/** Secret-free, JSON-serializable configuration and readiness summary. */
|
|
6509
|
+
describe(): AuthzDescription;
|
|
6069
6510
|
oaa: OaaClient;
|
|
6070
6511
|
/** Read the effective catalog union (materialized rows plus unmaterialized code templates). */
|
|
6071
6512
|
entitlements: {
|
|
@@ -6117,9 +6558,9 @@ type Authz = {
|
|
|
6117
6558
|
*/
|
|
6118
6559
|
grant(change: AccessChange): Promise<AccessChange>;
|
|
6119
6560
|
/**
|
|
6120
|
-
* Submit one grant or revoke request on a principal's behalf.
|
|
6121
|
-
*
|
|
6122
|
-
*
|
|
6561
|
+
* Submit one grant or revoke request on a principal's behalf. Under `'iam-request'`, targets the
|
|
6562
|
+
* IAM destination; under `'idp'`, targets the claims-bearing SSO/CIAM provider. One operation
|
|
6563
|
+
* maps to one approval decision, status, and tracking URL.
|
|
6123
6564
|
*/
|
|
6124
6565
|
requestAccess(change: {
|
|
6125
6566
|
subject: AccessChange["subject"];
|
|
@@ -6128,6 +6569,20 @@ type Authz = {
|
|
|
6128
6569
|
target: AccessChange["target"];
|
|
6129
6570
|
operation: "grant" | "revoke";
|
|
6130
6571
|
justification?: string;
|
|
6572
|
+
/** CIAM provider key. Required only when multiple providers expose an AccessRequests channel. */
|
|
6573
|
+
provider?: string;
|
|
6574
|
+
}): Promise<{
|
|
6575
|
+
id: string;
|
|
6576
|
+
status: "pending" | "approved" | "denied";
|
|
6577
|
+
operation: "grant" | "revoke";
|
|
6578
|
+
trackingUrl: string;
|
|
6579
|
+
}>;
|
|
6580
|
+
/** Read the destination-owned state of an on-behalf access request. */
|
|
6581
|
+
getAccessRequest(input: {
|
|
6582
|
+
id: string;
|
|
6583
|
+
subjectType: SubjectType;
|
|
6584
|
+
/** CIAM provider key. Required only when multiple providers expose an AccessRequests channel. */
|
|
6585
|
+
provider?: string;
|
|
6131
6586
|
}): Promise<{
|
|
6132
6587
|
id: string;
|
|
6133
6588
|
status: "pending" | "approved" | "denied";
|
|
@@ -6147,8 +6602,10 @@ type Authz = {
|
|
|
6147
6602
|
* - `'iam'` — never assign in-app; show a request link (or a read-only entitlement table).
|
|
6148
6603
|
* - `'iam-request'` — never assign in-app; the app submits a request on the principal's behalf via
|
|
6149
6604
|
* {@link Authz.requestAccess}.
|
|
6605
|
+
* - `'idp'` — the claims-bearing SSO/CIAM provider is assigner of record; requests use that
|
|
6606
|
+
* provider's ConfigSource-owned AccessRequests channel.
|
|
6150
6607
|
*/
|
|
6151
|
-
type IamAssignmentPolicy = "app" | "iam" | "iam-request";
|
|
6608
|
+
type IamAssignmentPolicy = "app" | "iam" | "iam-request" | "idp";
|
|
6152
6609
|
/**
|
|
6153
6610
|
* Thrown by {@link Authz.grant} when the Ops-owned assignment policy forbids in-app assignment.
|
|
6154
6611
|
* `requestUrl` is the IAM-written entitlement receipt when one exists, so the app can send the
|
|
@@ -6199,64 +6656,6 @@ declare function trustedClientPermissionsForPrincipal(authz: AuthzConfig | null
|
|
|
6199
6656
|
* OAA full sync — they are NEVER written to a store or materialized into the AccessIndex.
|
|
6200
6657
|
*/
|
|
6201
6658
|
declare function configTrustedClientGrants(authz: AuthzConfig | null | undefined): AccessChange[];
|
|
6202
|
-
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";
|
|
6203
|
-
type CapabilityEndpointUrls = {
|
|
6204
|
-
readyzUrl: string;
|
|
6205
|
-
capabilitiezUrl: string;
|
|
6206
|
-
sso: {
|
|
6207
|
-
loginUrl: string;
|
|
6208
|
-
userUrl: string;
|
|
6209
|
-
logoutUrl: string;
|
|
6210
|
-
logoutBackChannelUrl: string;
|
|
6211
|
-
refreshUrl: string;
|
|
6212
|
-
callbackUrl: string;
|
|
6213
|
-
};
|
|
6214
|
-
workload: {
|
|
6215
|
-
validateUrl: string;
|
|
6216
|
-
jwksUrl: string;
|
|
6217
|
-
};
|
|
6218
|
-
iam: {
|
|
6219
|
-
basePath: string;
|
|
6220
|
-
usersUrl: string;
|
|
6221
|
-
groupsUrl: string;
|
|
6222
|
-
workloadsUrl: string;
|
|
6223
|
-
customersUrl: string;
|
|
6224
|
-
};
|
|
6225
|
-
ciam: {
|
|
6226
|
-
magicLinkUrl: string;
|
|
6227
|
-
magicLinkLoginUrl: string;
|
|
6228
|
-
customerUrl: string;
|
|
6229
|
-
customerLoginUrl: string;
|
|
6230
|
-
customerCallbackUrl: string;
|
|
6231
|
-
customerProvidersUrl: string;
|
|
6232
|
-
logoutUrl: string;
|
|
6233
|
-
};
|
|
6234
|
-
};
|
|
6235
|
-
type CapabilityState = {
|
|
6236
|
-
module: ModuleName;
|
|
6237
|
-
active: boolean;
|
|
6238
|
-
ready: boolean;
|
|
6239
|
-
testable: boolean;
|
|
6240
|
-
urls?: string[];
|
|
6241
|
-
reason?: string;
|
|
6242
|
-
};
|
|
6243
|
-
type CapabilitiezManifest = {
|
|
6244
|
-
sdk: {
|
|
6245
|
-
/** Runtime @ionite/server version serving this manifest. */
|
|
6246
|
-
version: string;
|
|
6247
|
-
/** Version of the stable capability/test-unit vocabulary. */
|
|
6248
|
-
catalogVersion: number;
|
|
6249
|
-
};
|
|
6250
|
-
basePath: string;
|
|
6251
|
-
urls: CapabilityEndpointUrls;
|
|
6252
|
-
modules: Record<ModuleName, ModuleReadinessState>;
|
|
6253
|
-
capabilities: Record<CapabilityKey, CapabilityState>;
|
|
6254
|
-
/**
|
|
6255
|
-
* True when FrameworkConfig wired a live LFV callback transport. Boolean only — the transport
|
|
6256
|
-
* object, Redis URL, and credentials are never exposed.
|
|
6257
|
-
*/
|
|
6258
|
-
lfvCallbackTransport: boolean;
|
|
6259
|
-
};
|
|
6260
6659
|
/**
|
|
6261
6660
|
* Fields a {@link ConfigSource} may attach to a thrown error so the SDK can classify load/subscribe
|
|
6262
6661
|
* failures structurally instead of by fragile message-substring matching (§2.1). All fields are
|
|
@@ -6625,4 +7024,4 @@ type LfvErrorResponse = {
|
|
|
6625
7024
|
};
|
|
6626
7025
|
/** Generates a ULID */
|
|
6627
7026
|
declare function generateULID(prefix?: string): string;
|
|
6628
|
-
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 };
|
|
7027
|
+
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, InboundEntitlementDecision, InboundEntitlementRequest, 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, TmIoniteConfig, 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 };
|