@atlasauth/backend 0.7.2 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +30 -1
- package/dist/client/activity.d.ts +5 -0
- package/dist/client/activity.js.map +1 -1
- package/dist/client/branding.d.ts +58 -0
- package/dist/client/branding.js.map +1 -1
- package/dist/client/domains.d.ts +13 -0
- package/dist/client/domains.js.map +1 -1
- package/dist/client/error.d.ts +4 -0
- package/dist/client/error.js +4 -0
- package/dist/client/error.js.map +1 -1
- package/dist/client/index.d.ts +44 -1
- package/dist/client/index.js +4 -0
- package/dist/client/index.js.map +1 -1
- package/dist/client/instance.d.ts +192 -0
- package/dist/client/instance.js +38 -0
- package/dist/client/instance.js.map +1 -1
- package/dist/client/logout-notify-endpoints.d.ts +71 -0
- package/dist/client/logout-notify-endpoints.js +34 -0
- package/dist/client/logout-notify-endpoints.js.map +1 -0
- package/dist/client/messaging.d.ts +91 -0
- package/dist/client/messaging.js +27 -0
- package/dist/client/messaging.js.map +1 -1
- package/dist/client/oauth-clients.d.ts +61 -0
- package/dist/client/oauth-clients.js +12 -0
- package/dist/client/oauth-clients.js.map +1 -1
- package/dist/client/platform.d.ts +118 -0
- package/dist/client/platform.js +80 -0
- package/dist/client/platform.js.map +1 -1
- package/dist/client/users.d.ts +14 -1
- package/dist/client/users.js +10 -2
- package/dist/client/users.js.map +1 -1
- package/dist/client/webhooks.d.ts +21 -0
- package/dist/client/webhooks.js.map +1 -1
- package/dist/logout-token.d.ts +8 -0
- package/dist/logout-token.js +20 -15
- package/dist/logout-token.js.map +1 -1
- package/dist/webhooks.d.ts +16 -5
- package/dist/webhooks.js +11 -7
- package/dist/webhooks.js.map +1 -1
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @atlasauth/backend changelog
|
|
2
2
|
|
|
3
|
+
## 0.8.0
|
|
4
|
+
- **Back-channel logout, retryable failures.** A failed `LogoutTokenResult` gains `retryable: boolean`. It is `true` for `no_keys` (the issuer's keys could not be fetched: a network error, a JWKS outage, or a just-rotated key whose refetch failed) and `false` for `malformed`, `invalid` and `replayed`. Answer `503` with `Retry-After` when it is true, so Atlas retries the delivery, and `400` otherwise. The README example does this.
|
|
5
|
+
- **Back-channel delivery log and test.** `oauthClients.listBackchannelDeliveries(id, { limit?, starting_after? })` returns `BackchannelLogoutDeliveryPage` (`BackchannelLogoutDelivery`: `status`, `http_status`, `latency_ms`, `attempt_number`, `error`, `location`, `test`, timestamps). `oauthClients.testBackchannelLogout(id)` returns `BackchannelLogoutTest` (`ok`, `status`, `latency_ms`, `error`, `location`, `blocked_reason`, `body_excerpt`, `sid`, `delivery_id`). The platform client's `atlasIdApps` gains the same two methods plus `preflight(id)` (`AtlasIdAppPreflight`).
|
|
6
|
+
- **Webhooks.** `verifyWebhook` returns `deliveryId` (the signed `atlas-id` header, the same on every retry of one event: deduplicate on it) and `timestamp` (the signed `atlas-timestamp`, epoch ms) on a verified delivery. `WebhookVerifyResult` gains both, optional.
|
|
7
|
+
- **Users.** `User` gains optional `version`: it strictly increases with every change to the user, and user webhook payloads carry the same value. Apply an update only if its version is newer.
|
|
8
|
+
- **Branding.** `ResolvedBranding` (`resolved` on `branding.get` / `branding.update`) gains every writable field under its input name (`theme`, `layout`, `fontFamily`, `legal`, `copy`, `providers`, `card`, `interaction`, `socialButtons`, …) plus the derived `fontStack`, `providerOrder`, `providerHidden`, `eyebrow`, `headline`, `subheadline`, `footer`. `Branding.copy` accepts `eyebrow`.
|
|
9
|
+
- **Domain moves.** `instance.moveOrigin({ from, to, dry_run? })` rewrites every URL on one origin to another across the instance, its OAuth clients, webhooks, redirect URLs and Sign in with Atlas apps, and returns `OriginMove` (`changes` before → after, `problems`, `applied`); the platform client's `atlasIdApps.moveOrigin(id, body)` does the same for one app.
|
|
10
|
+
- **Connections and integrations.** `instance.connections()` returns `InstanceConnections` (one `InstanceConnection` row per link to another platform, with `ok`, `severity`, `fix_hint`). `instance.integrations.chatly` and `instance.integrations.forumulate` get, set and delete the built-in connections (`ChatlyIntegration`, `ForumulateIntegration`).
|
|
11
|
+
- **Logout fan-out.** New `logoutNotifyEndpoints` namespace: `list`, `create`, `get`, `update`, `delete` and `listDeliveries` for services that receive the same `logout_token` as your OIDC apps (`LogoutNotifyEndpoint`, `LogoutNotifyDelivery`).
|
|
12
|
+
- **Managed email.** `messaging.managedEmail.get / create / verify / delete({ force? })` sends from your own domain through Atlas's email account (`ManagedEmail`, `ManagedEmailRecord`, `CreateManagedEmailBody` with optional write-only `dns`). `MessagingProviders` gains `managed_email`.
|
|
13
|
+
- **Sign in with Atlas apps.** `atlasIdApps.findUsers(id, email)` (privacy-request lookup, `AtlasIdAppUser`), `revokeGrant(id, grantId)` (`AtlasIdGrantRevocation`) and `rotateWebhookSecret(id)`. `AtlasIdApp` gains `webhook_url`, `webhook_events` and `webhook_active`; `AtlasIdAppWithSecret` gains `webhook_secret`; `UpdateAtlasIdAppBody` accepts `webhook_url`.
|
|
14
|
+
- **Publisher.** New platform namespace `atlasIdPublisher`: `get`, `set`, `update({ skip_consent })`, `delete`, `verify` (`AtlasIdPublisher`). The platform client's `configChangelog.list(params)` reads the account's config history.
|
|
15
|
+
- **More fields.** `CookieConsent` gains `culture` and `declared_cookies` (`DeclaredCookie`); `SetCookieConsentBody` accepts `culture`. `PreflightReport` gains `sdk_versions_seen` (`SdkVersionSeen`, `SdkAdvisory`). `WebhookDelivery` gains `error` and `location`; `WebhookEndpointList` gains `event_catalog` (`WebhookEventCatalogEntry`) and `event_audiences`. `CustomDomain` gains `dns`, and `domains.create` accepts `dns` (`CustomDomainDnsInput`). `ConfigChangelogEntry` gains `target`. `users.revokeSessions(id, { revoke_grants })` also revokes OAuth grants and returns `grants_revoked`.
|
|
16
|
+
- **Compatible.** New methods, types and optional fields only (`retryable` is a new field on the failure branch); no signatures changed.
|
|
17
|
+
|
|
18
|
+
## 0.7.3
|
|
19
|
+
- **Added** error code constants `CAPTCHA_KEYS_REQUIRED` (422: captcha can only be turned on once its own site key and secret are stored) and `CAPTCHA_IN_USE` (409: removing a key a live captcha flow uses; `meta.flows`).
|
|
20
|
+
|
|
3
21
|
## 0.7.2
|
|
4
22
|
- **OAuth clients.** `OAuthClient` gains `skip_logout_confirmation` (boolean), and `OAuthClientLogoutFields` (create and update bodies) accepts it. When true, RP-initiated logout with the client's `client_id` and an exactly registered `post_logout_redirect_uri` ends the session and redirects straight back, with no confirmation page. First-party clients only: the API answers `422` (`VALIDATION_FAILED`, `param: skip_logout_confirmation`) on a third-party client.
|
|
5
23
|
- **Cookie consent.** `CookieConsent` gains `settings_link` (`CookieSettingsLink | null`: `label`, `preset`, `attributes`, `rendered_attributes`), and `SetCookieConsentBody` accepts `settings_link` (`CookieSettingsLinkInput | null`: `label`, `preset?`, `attributes?`) for a footer "Cookie settings" link that reopens the consent preferences. New types: `CookieSettingsLink`, `CookieSettingsLinkInput`, `CookieSettingsLinkPreset` (`'cookiemunch' | 'cookiebot' | 'onetrust' | 'custom'`).
|
package/README.md
CHANGED
|
@@ -178,6 +178,25 @@ The platform client has these namespaces:
|
|
|
178
178
|
|
|
179
179
|
It accepts the same `strict`, `onUnknownFields` and `withOptions` settings.
|
|
180
180
|
|
|
181
|
+
### Domain moves, logout fan-out and managed email
|
|
182
|
+
|
|
183
|
+
```ts
|
|
184
|
+
// Move every URL from the old origin to the new one. dry_run first shows the diff.
|
|
185
|
+
const preview = await atlas.instance.moveOrigin({ from: 'https://old.example.com', to: 'https://example.com', dry_run: true });
|
|
186
|
+
for (const c of preview.changes) console.log(c.object, c.field, c.before, '->', c.after);
|
|
187
|
+
|
|
188
|
+
// Send the same logout_token your OIDC apps get to another service.
|
|
189
|
+
await atlas.logoutNotifyEndpoints.create({ url: 'https://api.example.com/atlas/logout' });
|
|
190
|
+
|
|
191
|
+
// Send email from your own domain through Atlas, then publish the returned DNS records.
|
|
192
|
+
const managed = await atlas.messaging.managedEmail.create({ from_address: 'Acme <no-reply@example.com>' });
|
|
193
|
+
console.log(managed.records);
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
On the platform client, `atlasIdApps.findUsers(id, email)` answers a privacy request for one app,
|
|
197
|
+
`atlasIdApps.revokeGrant(id, grantId)` revokes one person's approval, and `atlasIdPublisher` claims and verifies
|
|
198
|
+
the publisher name shown on consent screens.
|
|
199
|
+
|
|
181
200
|
## Back-channel logout
|
|
182
201
|
|
|
183
202
|
When a user signs out of Atlas, Atlas POSTs a `logout_token` to your `backchannel_logout_uri`. Verify it before you end the matching local sessions:
|
|
@@ -198,7 +217,13 @@ export async function handleBackchannelLogout(form: URLSearchParams) {
|
|
|
198
217
|
if (!token) return { status: 400, headers };
|
|
199
218
|
|
|
200
219
|
const result = await logoutTokens.verify(token);
|
|
201
|
-
if (!result.ok)
|
|
220
|
+
if (!result.ok) {
|
|
221
|
+
// retryable: our side failed for now (the issuer's keys could not be fetched).
|
|
222
|
+
// 503 + Retry-After makes Atlas send it again; 400 is final and never retried.
|
|
223
|
+
return result.retryable
|
|
224
|
+
? { status: 503, headers: { ...headers, 'Retry-After': '30' } }
|
|
225
|
+
: { status: 400, headers };
|
|
226
|
+
}
|
|
202
227
|
|
|
203
228
|
const { sid, sub } = result.claims;
|
|
204
229
|
if (sid) await sessions.deleteByAtlasSid(sid); // your session store
|
|
@@ -222,6 +247,10 @@ For tokens signed by your own instance, `new AtlasBackend({ issuer }).verifyLogo
|
|
|
222
247
|
|
|
223
248
|
To refuse replays across several servers, implement `LogoutReplayStore.remember(jti, expiresAtMs)` on a shared store, for example Redis `SET NX PX`.
|
|
224
249
|
|
|
250
|
+
Atlas retries a delivery that gets a `5xx`, `408`, `429` or no answer, after 5 seconds, 5 minutes, 30 minutes, 2 hours, 5 hours and 10 hours. Any other `4xx` is final. Atlas never follows a redirect: a `3xx` answer is recorded as `backchannel_redirect_not_followed`, so after a domain move update `backchannel_logout_uri` to the final URL. Answer your own transient failures (a database that is down) with `503` too.
|
|
251
|
+
|
|
252
|
+
To check the route end to end, `oauthClients.testBackchannelLogout(id)` sends a signed test token (`sid` starting `sid_test_`, extra claim `atlas_test: true`) and returns what your route answered; `oauthClients.listBackchannelDeliveries(id)` lists every attempt.
|
|
253
|
+
|
|
225
254
|
## Webhooks
|
|
226
255
|
|
|
227
256
|
`verifyWebhook` checks the signature on events Atlas sends to your webhook endpoints. You manage endpoints with `atlas.webhooks.endpoints`: create, update, reveal or rotate a secret, send a test event, and redeliver a past delivery.
|
|
@@ -70,6 +70,11 @@ export interface ConfigChangelogEntry {
|
|
|
70
70
|
};
|
|
71
71
|
action: string;
|
|
72
72
|
ip?: string | null;
|
|
73
|
+
/** The object that changed, e.g. `{ type: 'oauth_client', id }`. */
|
|
74
|
+
target?: {
|
|
75
|
+
type: string;
|
|
76
|
+
id: string | null;
|
|
77
|
+
} | null;
|
|
73
78
|
changes?: Array<{
|
|
74
79
|
section: string;
|
|
75
80
|
before: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/client/activity.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../src/client/activity.ts"],"names":[],"mappings":";;AA8EA,wCAOC;AAED,sCAOC;AAED,0DAaC;AA/BD,SAAgB,cAAc,CAAC,OAAkB;IAC/C,OAAO;QACL,2EAA2E;QAC3E,IAAI,CAAC,SAAmC,EAAE;YACxC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa,CAAC,OAAkB;IAC9C,OAAO;QACL,0FAA0F;QAC1F,GAAG,CAAC,SAA4B,EAAE;YAChC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,uBAAuB,CAAC,OAAkB;IACxD,OAAO;QACL,IAAI,CACF,SAAoC,EAAE;YAOtC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QACxF,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -32,6 +32,7 @@ export interface Branding {
|
|
|
32
32
|
hidden?: string[];
|
|
33
33
|
};
|
|
34
34
|
copy?: {
|
|
35
|
+
eyebrow?: string;
|
|
35
36
|
headline?: string;
|
|
36
37
|
subheadline?: string;
|
|
37
38
|
footer?: string;
|
|
@@ -116,6 +117,63 @@ export interface ResolvedBranding {
|
|
|
116
117
|
colorBackground: string;
|
|
117
118
|
colorText: string;
|
|
118
119
|
supportEmail: string | null;
|
|
120
|
+
colorAccent?: string;
|
|
121
|
+
colorCard?: string;
|
|
122
|
+
colorBorder?: string;
|
|
123
|
+
borderRadius?: string;
|
|
124
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
125
|
+
/** The font stack name in force (`system` when unset or unknown). */
|
|
126
|
+
fontFamily?: string;
|
|
127
|
+
/** The CSS font-family list `fontFamily` resolves to. */
|
|
128
|
+
fontStack?: string;
|
|
129
|
+
fontUrl?: string | null;
|
|
130
|
+
layout?: 'centered' | 'split' | 'wall';
|
|
131
|
+
background?: Record<string, unknown>;
|
|
132
|
+
providers?: {
|
|
133
|
+
order: string[];
|
|
134
|
+
hidden: string[];
|
|
135
|
+
};
|
|
136
|
+
providerOrder?: string[];
|
|
137
|
+
providerHidden?: string[];
|
|
138
|
+
socialButtons?: Record<string, unknown>;
|
|
139
|
+
codeInput?: 'boxes' | 'single';
|
|
140
|
+
card?: {
|
|
141
|
+
width: string;
|
|
142
|
+
align: string;
|
|
143
|
+
logoSize: string;
|
|
144
|
+
};
|
|
145
|
+
typography?: {
|
|
146
|
+
headingSize: string;
|
|
147
|
+
headingWeight: string;
|
|
148
|
+
};
|
|
149
|
+
buttonShape?: string;
|
|
150
|
+
cardBorder?: string;
|
|
151
|
+
inputSize?: string;
|
|
152
|
+
interaction?: Record<string, unknown>;
|
|
153
|
+
backgroundPattern?: string;
|
|
154
|
+
cardStyle?: string;
|
|
155
|
+
textScale?: string;
|
|
156
|
+
socialPlacement?: 'top' | 'bottom';
|
|
157
|
+
sectionOrder?: string[];
|
|
158
|
+
legal?: {
|
|
159
|
+
termsUrl: string | null;
|
|
160
|
+
privacyUrl: string | null;
|
|
161
|
+
required: boolean;
|
|
162
|
+
};
|
|
163
|
+
signUpFields?: Array<Record<string, unknown>>;
|
|
164
|
+
copy?: {
|
|
165
|
+
eyebrow: string | null;
|
|
166
|
+
headline: string | null;
|
|
167
|
+
subheadline: string | null;
|
|
168
|
+
footer: string | null;
|
|
169
|
+
};
|
|
170
|
+
eyebrow?: string | null;
|
|
171
|
+
headline?: string | null;
|
|
172
|
+
subheadline?: string | null;
|
|
173
|
+
footer?: string | null;
|
|
174
|
+
customCss?: string;
|
|
175
|
+
customHtmlHeader?: string;
|
|
176
|
+
customHtmlFooter?: string;
|
|
119
177
|
}
|
|
120
178
|
/**
|
|
121
179
|
* A read/update echoes the stored branding plus `resolved` — the sanitized shape
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"branding.js","sourceRoot":"","sources":["../../src/client/branding.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"branding.js","sourceRoot":"","sources":["../../src/client/branding.ts"],"names":[],"mappings":";;AAkLA,4CAcC;AAdD,SAAgB,gBAAgB,CAAC,OAAkB;IACjD,OAAO;QACL,GAAG;YACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,kEAAkE;QAClE,MAAM,CAAC,IAAuB;YAC5B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,0EAA0E;QAC1E,OAAO,CAAC,IAAuB;YAC7B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/client/domains.d.ts
CHANGED
|
@@ -13,6 +13,18 @@ export interface CustomDomain {
|
|
|
13
13
|
failure_reason: string | null;
|
|
14
14
|
certificate_expires_at: number | null;
|
|
15
15
|
cookie_domain: string | null;
|
|
16
|
+
/** DNS automation: the provider Atlas writes this host's record with (the token is never returned). */
|
|
17
|
+
dns?: {
|
|
18
|
+
provider: 'cloudflare';
|
|
19
|
+
token_set: boolean;
|
|
20
|
+
} | null;
|
|
21
|
+
}
|
|
22
|
+
/** Let Atlas write the domain's DNS record. The token is write-only. */
|
|
23
|
+
export interface CustomDomainDnsInput {
|
|
24
|
+
provider: 'cloudflare';
|
|
25
|
+
api_token: string;
|
|
26
|
+
/** Replace a conflicting existing record. */
|
|
27
|
+
overwrite?: boolean;
|
|
16
28
|
}
|
|
17
29
|
export interface ListDomainsResponse {
|
|
18
30
|
object: 'list';
|
|
@@ -31,6 +43,7 @@ export declare function domainsResource(request: RequestFn): {
|
|
|
31
43
|
create(body: {
|
|
32
44
|
host: string;
|
|
33
45
|
role?: "fapi" | "accounts";
|
|
46
|
+
dns?: CustomDomainDnsInput;
|
|
34
47
|
}, idempotencyKey?: string): Promise<CustomDomain & {
|
|
35
48
|
instructions: Record<string, unknown>;
|
|
36
49
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/client/domains.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../../src/client/domains.ts"],"names":[],"mappings":";;AAsCA,0CAkBC;AAxDD,uCAAgD;AAsChD,SAAgB,eAAe,CAAC,OAAkB;IAChD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,MAAM,CACJ,IAA8E,EAC9E,cAAuB;YAEvB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACvE,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/client/error.d.ts
CHANGED
|
@@ -41,6 +41,10 @@ export declare const AtlasErrorCodes: {
|
|
|
41
41
|
readonly EMAIL_PROVIDER_REQUIRED: "EMAIL_PROVIDER_REQUIRED";
|
|
42
42
|
/** The email provider can't be removed while email-dependent features need it (`meta.features`). */
|
|
43
43
|
readonly EMAIL_PROVIDER_IN_USE: "EMAIL_PROVIDER_IN_USE";
|
|
44
|
+
/** 422 — captcha turned on without its own site key and secret (captcha is bring-your-own-keys). */
|
|
45
|
+
readonly CAPTCHA_KEYS_REQUIRED: "CAPTCHA_KEYS_REQUIRED";
|
|
46
|
+
/** 409 — removing a captcha key a live flow uses (`meta.flows`); `force=true` turns those flows off. */
|
|
47
|
+
readonly CAPTCHA_IN_USE: "CAPTCHA_IN_USE";
|
|
44
48
|
/** Strict mode: the body had a field this endpoint does not accept (`param` names it). */
|
|
45
49
|
readonly UNKNOWN_FIELD: "UNKNOWN_FIELD";
|
|
46
50
|
/** The billing plan still has subscribers and cannot be removed. */
|
package/dist/client/error.js
CHANGED
|
@@ -37,6 +37,10 @@ exports.AtlasErrorCodes = {
|
|
|
37
37
|
EMAIL_PROVIDER_REQUIRED: 'EMAIL_PROVIDER_REQUIRED',
|
|
38
38
|
/** The email provider can't be removed while email-dependent features need it (`meta.features`). */
|
|
39
39
|
EMAIL_PROVIDER_IN_USE: 'EMAIL_PROVIDER_IN_USE',
|
|
40
|
+
/** 422 — captcha turned on without its own site key and secret (captcha is bring-your-own-keys). */
|
|
41
|
+
CAPTCHA_KEYS_REQUIRED: 'CAPTCHA_KEYS_REQUIRED',
|
|
42
|
+
/** 409 — removing a captcha key a live flow uses (`meta.flows`); `force=true` turns those flows off. */
|
|
43
|
+
CAPTCHA_IN_USE: 'CAPTCHA_IN_USE',
|
|
40
44
|
/** Strict mode: the body had a field this endpoint does not accept (`param` names it). */
|
|
41
45
|
UNKNOWN_FIELD: 'UNKNOWN_FIELD',
|
|
42
46
|
/** The billing plan still has subscribers and cannot be removed. */
|
package/dist/client/error.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/client/error.ts"],"names":[],"mappings":";;;AAoBA,MAAa,aAAc,SAAQ,KAAK;IACpB,IAAI,GAAG,eAAe,CAAC;IACzC,0CAA0C;IACjC,MAAM,CAAS;IACxB,8CAA8C;IACrC,MAAM,CAAmB;IAElC,YAAY,MAAc,EAAE,MAAwB,EAAE,OAAgB;QACpE,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,wCAAwC,MAAM,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,uEAAuE;QACvE,sEAAsE;QACtE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,uEAAuE;IACvE,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAC9B,CAAC;IAED,yEAAyE;IACzE,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAClD,CAAC;CACF;AAzBD,sCAyBC;AAED;;;;GAIG;AACU,QAAA,eAAe,GAAG;IAC7B,+EAA+E;IAC/E,6BAA6B,EAAE,+BAA+B;IAC9D,mEAAmE;IACnE,uBAAuB,EAAE,yBAAyB;IAClD,oGAAoG;IACpG,qBAAqB,EAAE,uBAAuB;IAC9C,0FAA0F;IAC1F,aAAa,EAAE,eAAe;IAC9B,oEAAoE;IACpE,WAAW,EAAE,aAAa;IAC1B,6FAA6F;IAC7F,iBAAiB,EAAE,mBAAmB;IACtC,gDAAgD;IAChD,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,cAAc;IAC5B,4FAA4F;IAC5F,oBAAoB,EAAE,sBAAsB;IAC5C,yFAAyF;IACzF,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,oBAAoB,EAAE,sBAAsB;IAC5C,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;CACZ,CAAC"}
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../src/client/error.ts"],"names":[],"mappings":";;;AAoBA,MAAa,aAAc,SAAQ,KAAK;IACpB,IAAI,GAAG,eAAe,CAAC;IACzC,0CAA0C;IACjC,MAAM,CAAS;IACxB,8CAA8C;IACrC,MAAM,CAAmB;IAElC,YAAY,MAAc,EAAE,MAAwB,EAAE,OAAgB;QACpE,KAAK,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,wCAAwC,MAAM,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,uEAAuE;QACvE,sEAAsE;QACtE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,uEAAuE;IACvE,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;IAC9B,CAAC;IAED,yEAAyE;IACzE,OAAO,CAAC,IAAY;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAClD,CAAC;CACF;AAzBD,sCAyBC;AAED;;;;GAIG;AACU,QAAA,eAAe,GAAG;IAC7B,+EAA+E;IAC/E,6BAA6B,EAAE,+BAA+B;IAC9D,mEAAmE;IACnE,uBAAuB,EAAE,yBAAyB;IAClD,oGAAoG;IACpG,qBAAqB,EAAE,uBAAuB;IAC9C,oGAAoG;IACpG,qBAAqB,EAAE,uBAAuB;IAC9C,wGAAwG;IACxG,cAAc,EAAE,gBAAgB;IAChC,0FAA0F;IAC1F,aAAa,EAAE,eAAe;IAC9B,oEAAoE;IACpE,WAAW,EAAE,aAAa;IAC1B,6FAA6F;IAC7F,iBAAiB,EAAE,mBAAmB;IACtC,gDAAgD;IAChD,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,iBAAiB,EAAE,mBAAmB;IACtC,YAAY,EAAE,cAAc;IAC5B,4FAA4F;IAC5F,oBAAoB,EAAE,sBAAsB;IAC5C,yFAAyF;IACzF,cAAc,EAAE,gBAAgB;IAChC,eAAe,EAAE,iBAAiB;IAClC,oBAAoB,EAAE,sBAAsB;IAC5C,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;IAC9B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;CACZ,CAAC"}
|
package/dist/client/index.d.ts
CHANGED
|
@@ -35,10 +35,13 @@ declare function buildNamespaces(request: RequestFn): {
|
|
|
35
35
|
deleted: true;
|
|
36
36
|
}>;
|
|
37
37
|
listSessions(id: string): Promise<import("./types").ListPage<import("./users").UserSession>>;
|
|
38
|
-
revokeSessions(id: string
|
|
38
|
+
revokeSessions(id: string, options?: {
|
|
39
|
+
revoke_grants?: boolean;
|
|
40
|
+
}): Promise<{
|
|
39
41
|
object: "user";
|
|
40
42
|
id: string;
|
|
41
43
|
sessions_revoked: number;
|
|
44
|
+
grants_revoked?: number;
|
|
42
45
|
}>;
|
|
43
46
|
addEmail(id: string, body: {
|
|
44
47
|
email_address: string;
|
|
@@ -345,6 +348,8 @@ declare function buildNamespaces(request: RequestFn): {
|
|
|
345
348
|
deleted: true;
|
|
346
349
|
note: string;
|
|
347
350
|
}>;
|
|
351
|
+
listBackchannelDeliveries(id: string, query?: import("./oauth-clients").BackchannelDeliveriesQuery): Promise<import("./oauth-clients").BackchannelLogoutDeliveryPage>;
|
|
352
|
+
testBackchannelLogout(id: string): Promise<import("./oauth-clients").BackchannelLogoutTest>;
|
|
348
353
|
grants: {
|
|
349
354
|
list(clientId: string): Promise<import("./types").ListPage<import("./oauth-clients").ClientGrant>>;
|
|
350
355
|
create(clientId: string, body: {
|
|
@@ -396,6 +401,7 @@ declare function buildNamespaces(request: RequestFn): {
|
|
|
396
401
|
create(body: {
|
|
397
402
|
host: string;
|
|
398
403
|
role?: "fapi" | "accounts";
|
|
404
|
+
dns?: import("./domains").CustomDomainDnsInput;
|
|
399
405
|
}, idempotencyKey?: string): Promise<import("./domains").CustomDomain & {
|
|
400
406
|
instructions: Record<string, unknown>;
|
|
401
407
|
}>;
|
|
@@ -835,6 +841,14 @@ declare function buildNamespaces(request: RequestFn): {
|
|
|
835
841
|
deleteChannel(channel: "email" | "sms", options?: {
|
|
836
842
|
force?: boolean;
|
|
837
843
|
}): Promise<import("./messaging").DeletedMessagingProvider>;
|
|
844
|
+
managedEmail: {
|
|
845
|
+
get(): Promise<import("./messaging").ManagedEmail>;
|
|
846
|
+
create(body: import("./messaging").CreateManagedEmailBody): Promise<import("./messaging").ManagedEmail>;
|
|
847
|
+
verify(): Promise<import("./messaging").ManagedEmail>;
|
|
848
|
+
delete(options?: {
|
|
849
|
+
force?: boolean;
|
|
850
|
+
}): Promise<import("./messaging").DeletedManagedEmail>;
|
|
851
|
+
};
|
|
838
852
|
test(channel: "email" | "sms", body: {
|
|
839
853
|
to: string;
|
|
840
854
|
}): Promise<import("./messaging").MessagingTestResult>;
|
|
@@ -882,6 +896,20 @@ declare function buildNamespaces(request: RequestFn): {
|
|
|
882
896
|
get(): Promise<import("./instance").Instance>;
|
|
883
897
|
update(body: import("./instance").UpdateInstanceBody): Promise<import("./instance").InstanceUpdateResult>;
|
|
884
898
|
preflight(): Promise<import("./instance").PreflightReport>;
|
|
899
|
+
moveOrigin(body: import("./instance").OriginMoveRequest): Promise<import("./instance").OriginMove>;
|
|
900
|
+
connections(): Promise<import("./instance").InstanceConnections>;
|
|
901
|
+
integrations: {
|
|
902
|
+
chatly: {
|
|
903
|
+
get(): Promise<import("./instance").ChatlyIntegration>;
|
|
904
|
+
set(body: import("./instance").SetChatlyIntegrationBody): Promise<import("./instance").ChatlyIntegration>;
|
|
905
|
+
delete(): Promise<import("./instance").ChatlyIntegration>;
|
|
906
|
+
};
|
|
907
|
+
forumulate: {
|
|
908
|
+
get(): Promise<import("./instance").ForumulateIntegration>;
|
|
909
|
+
set(body: import("./instance").SetForumulateIntegrationBody): Promise<import("./instance").ForumulateIntegration>;
|
|
910
|
+
delete(): Promise<import("./instance").ForumulateIntegration>;
|
|
911
|
+
};
|
|
912
|
+
};
|
|
885
913
|
cookieConsent: {
|
|
886
914
|
get(): Promise<import("./instance").CookieConsent>;
|
|
887
915
|
set(body: import("./instance").SetCookieConsentBody): Promise<import("./instance").CookieConsent>;
|
|
@@ -1200,6 +1228,20 @@ declare function buildNamespaces(request: RequestFn): {
|
|
|
1200
1228
|
loginReadiness(params: import("./diagnostics").LoginReadinessParams): Promise<import("./diagnostics").LoginReadiness>;
|
|
1201
1229
|
requestInspector(params: import("./diagnostics").RequestInspectorParams): Promise<import("./diagnostics").RequestInspection>;
|
|
1202
1230
|
};
|
|
1231
|
+
logoutNotifyEndpoints: {
|
|
1232
|
+
list(): Promise<import("./logout-notify-endpoints").LogoutNotifyList<import("./logout-notify-endpoints").LogoutNotifyEndpoint>>;
|
|
1233
|
+
create(body: import("./logout-notify-endpoints").CreateLogoutNotifyEndpointBody, idempotencyKey?: string): Promise<import("./logout-notify-endpoints").LogoutNotifyEndpoint>;
|
|
1234
|
+
get(id: string): Promise<import("./logout-notify-endpoints").LogoutNotifyEndpoint>;
|
|
1235
|
+
update(id: string, body: import("./logout-notify-endpoints").UpdateLogoutNotifyEndpointBody, idempotencyKey?: string): Promise<import("./logout-notify-endpoints").LogoutNotifyEndpoint>;
|
|
1236
|
+
delete(id: string, idempotencyKey?: string): Promise<{
|
|
1237
|
+
object: "logout_notify_endpoint";
|
|
1238
|
+
id: string;
|
|
1239
|
+
deleted: true;
|
|
1240
|
+
}>;
|
|
1241
|
+
listDeliveries(id: string, params?: {
|
|
1242
|
+
limit?: number;
|
|
1243
|
+
}): Promise<import("./logout-notify-endpoints").LogoutNotifyList<import("./logout-notify-endpoints").LogoutNotifyDelivery>>;
|
|
1244
|
+
};
|
|
1203
1245
|
};
|
|
1204
1246
|
/** Every resource namespace of the management client. */
|
|
1205
1247
|
export type AtlasClientNamespaces = ReturnType<typeof buildNamespaces>;
|
|
@@ -1282,4 +1324,5 @@ export * from './session-exchange-apps';
|
|
|
1282
1324
|
export * from './tickets';
|
|
1283
1325
|
export * from './test-mode';
|
|
1284
1326
|
export * from './diagnostics';
|
|
1327
|
+
export * from './logout-notify-endpoints';
|
|
1285
1328
|
export * from './platform';
|
package/dist/client/index.js
CHANGED
|
@@ -72,6 +72,7 @@ const connectors_1 = require("./connectors");
|
|
|
72
72
|
const notifications_1 = require("./notifications");
|
|
73
73
|
const audit_events_1 = require("./audit-events");
|
|
74
74
|
const activity_1 = require("./activity");
|
|
75
|
+
const logout_notify_endpoints_1 = require("./logout-notify-endpoints");
|
|
75
76
|
const pca_1 = require("./pca");
|
|
76
77
|
const mcp_1 = require("./mcp");
|
|
77
78
|
const legacy_auth_1 = require("./legacy-auth");
|
|
@@ -175,6 +176,8 @@ function buildNamespaces(request) {
|
|
|
175
176
|
// Development-instance helpers: the paired test instance, test users, testing tokens.
|
|
176
177
|
testMode: (0, test_mode_1.testModeResource)(request),
|
|
177
178
|
diagnostics: (0, diagnostics_1.diagnosticsResource)(request),
|
|
179
|
+
// Downstream services that get the same logout_token as your OIDC apps.
|
|
180
|
+
logoutNotifyEndpoints: (0, logout_notify_endpoints_1.logoutNotifyEndpointsResource)(request),
|
|
178
181
|
};
|
|
179
182
|
}
|
|
180
183
|
var request_2 = require("./request");
|
|
@@ -253,5 +256,6 @@ __exportStar(require("./session-exchange-apps"), exports);
|
|
|
253
256
|
__exportStar(require("./tickets"), exports);
|
|
254
257
|
__exportStar(require("./test-mode"), exports);
|
|
255
258
|
__exportStar(require("./diagnostics"), exports);
|
|
259
|
+
__exportStar(require("./logout-notify-endpoints"), exports);
|
|
256
260
|
__exportStar(require("./platform"), exports);
|
|
257
261
|
//# sourceMappingURL=index.js.map
|
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AA4EA,8CAQC;AApFD,uCAA6F;AAC7F,mCAAwC;AACxC,yCAA8C;AAC9C,mDAAwD;AACxD,mCAA6D;AAC7D,mDAAuD;AACvD,yDAA6D;AAC7D,uDAA2D;AAC3D,+CAAmD;AACnD,uCAA4C;AAC5C,yCAA8C;AAC9C,iDAAsE;AACtE,2DAA+D;AAC/D,iDAAqD;AACrD,+CAAoD;AACpD,yCAA8C;AAC9C,qDAAwD;AACxD,6CAAiD;AACjD,mDAAuD;AACvD,yCAA6C;AAC7C,yCAA8C;AAC9C,uDAA2D;AAC3D,qDAAyD;AACzD,2DAA+D;AAC/D,+BAAoC;AACpC,6CAAuD;AACvD,qDAAwD;AACxD,+CAAmD;AACnD,iDAAqD;AACrD,+CAAmD;AACnD,+CAAmD;AACnD,yCAA8C;AAC9C,uDAA2D;AAC3D,mDAAuD;AACvD,mDAAwD;AACxD,uCAA4C;AAC5C,mDAAkD;AAClD,2CAAgD;AAChD,mDAAuD;AACvD,mEAAsE;AACtE,qDAAyD;AACzD,mDAAuD;AACvD,yCAA8C;AAC9C,2DAA+D;AAC/D,qCAA0C;AAC1C,uCAA4C;AAC5C,qCAA0C;AAC1C,mEAAuE;AACvE,iEAAoE;AACpE,iFAAoF;AACpF,uDAA2D;AAC3D,uCAA4C;AAC5C,6CAAkD;AAClD,mDAAwD;AACxD,iDAAqD;AACrD,yCAAoF;AACpF,uEAA0E;AAC1E,+BAAoC;AACpC,+BAA0D;AAC1D,+CAA6D;AAC7D,mDAAuD;AACvD,mEAAsE;AACtE,uCAA4C;AAC5C,2CAA+C;AAC/C,+CAAoD;AAGpD;;;;;;;;GAQG;AACH,SAAgB,iBAAiB,CAAC,MAAyB;IACzD,MAAM,OAAO,GAAG,IAAA,uBAAa,EAAC,MAAM,CAAC,CAAC;IACtC,OAAO;QACL,GAAG,eAAe,CAAC,OAAO,CAAC;QAC3B,WAAW,CAAC,SAA+B;YACzC,OAAO,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;QACxD,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAkB;IACzC,OAAO;QACL,KAAK,EAAE,IAAA,qBAAa,EAAC,OAAO,CAAC;QAC7B,QAAQ,EAAE,IAAA,2BAAgB,EAAC,OAAO,CAAC;QACnC,aAAa,EAAE,IAAA,qCAAqB,EAAC,OAAO,CAAC;QAC7C,KAAK,EAAE,IAAA,qBAAa,EAAC,OAAO,CAAC;QAC7B,WAAW,EAAE,IAAA,2BAAmB,EAAC,OAAO,CAAC;QACzC,YAAY,EAAE,IAAA,oCAAoB,EAAC,OAAO,CAAC;QAC3C,eAAe,EAAE,IAAA,0CAAuB,EAAC,OAAO,CAAC;QACjD,cAAc,EAAE,IAAA,wCAAsB,EAAC,OAAO,CAAC;QAC/C,UAAU,EAAE,IAAA,gCAAkB,EAAC,OAAO,CAAC;QACvC,OAAO,EAAE,IAAA,yBAAe,EAAC,OAAO,CAAC;QACjC,QAAQ,EAAE,IAAA,2BAAgB,EAAC,OAAO,CAAC;QACnC,SAAS,EAAE,IAAA,gCAAiB,EAAC,OAAO,CAAC;QACrC,SAAS,EAAE,IAAA,gCAAiB,EAAC,OAAO,CAAC;QACrC,gBAAgB,EAAE,IAAA,4CAAwB,EAAC,OAAO,CAAC;QACnD,WAAW,EAAE,IAAA,kCAAmB,EAAC,OAAO,CAAC;QACzC,WAAW,EAAE,IAAA,iCAAmB,EAAC,OAAO,CAAC;QACzC,QAAQ,EAAE,IAAA,2BAAgB,EAAC,OAAO,CAAC;QACnC,YAAY,EAAE,IAAA,qCAAoB,EAAC,OAAO,CAAC;QAC3C,SAAS,EAAE,IAAA,8BAAiB,EAAC,OAAO,CAAC;QACrC,YAAY,EAAE,IAAA,oCAAoB,EAAC,OAAO,CAAC;QAC3C,OAAO,EAAE,IAAA,0BAAe,EAAC,OAAO,CAAC;QACjC,8EAA8E;QAC9E,QAAQ,EAAE,IAAA,2BAAgB,EAAC,OAAO,CAAC;QACnC,cAAc,EAAE,IAAA,wCAAsB,EAAC,OAAO,CAAC;QAC/C,aAAa,EAAE,IAAA,sCAAqB,EAAC,OAAO,CAAC;QAC7C,gBAAgB,EAAE,IAAA,4CAAwB,EAAC,OAAO,CAAC;QACnD,GAAG,EAAE,IAAA,iBAAW,EAAC,OAAO,CAAC;QACzB,eAAe,EAAE,IAAA,oCAAuB,EAAC,OAAO,CAAC;QACjD,YAAY,EAAE,IAAA,qCAAoB,EAAC,OAAO,CAAC;QAC3C,UAAU,EAAE,IAAA,gCAAkB,EAAC,OAAO,CAAC;QACvC,WAAW,EAAE,IAAA,kCAAmB,EAAC,OAAO,CAAC;QACzC,UAAU,EAAE,IAAA,gCAAkB,EAAC,OAAO,CAAC;QACvC,UAAU,EAAE,IAAA,gCAAkB,EAAC,OAAO,CAAC;QACvC,QAAQ,EAAE,IAAA,2BAAgB,EAAC,OAAO,CAAC;QACnC,cAAc,EAAE,IAAA,wCAAsB,EAAC,OAAO,CAAC;QAC/C,YAAY,EAAE,IAAA,oCAAoB,EAAC,OAAO,CAAC;QAC3C,aAAa,EAAE,IAAA,qCAAqB,EAAC,OAAO,CAAC;QAC7C,OAAO,EAAE,IAAA,yBAAe,EAAC,OAAO,CAAC;QACjC,OAAO,EAAE,IAAA,+BAAe,EAAC,OAAO,CAAC;QACjC,SAAS,EAAE,IAAA,6BAAiB,EAAC,OAAO,CAAC;QACrC,YAAY,EAAE,IAAA,oCAAoB,EAAC,OAAO,CAAC;QAC3C,mBAAmB,EAAE,IAAA,mDAA2B,EAAC,OAAO,CAAC;QACzD,aAAa,EAAE,IAAA,sCAAqB,EAAC,OAAO,CAAC;QAC7C,YAAY,EAAE,IAAA,oCAAoB,EAAC,OAAO,CAAC;QAC3C,QAAQ,EAAE,IAAA,2BAAgB,EAAC,OAAO,CAAC;QACnC,gBAAgB,EAAE,IAAA,4CAAwB,EAAC,OAAO,CAAC;QACnD,MAAM,EAAE,IAAA,uBAAc,EAAC,OAAO,CAAC;QAC/B,0EAA0E;QAC1E,6EAA6E;QAC7E,OAAO,EAAE,IAAA,yBAAe,EAAC,OAAO,CAAC;QACjC,+EAA+E;QAC/E,MAAM,EAAE,IAAA,uBAAc,EAAC,OAAO,CAAC;QAC/B,oBAAoB,EAAE,IAAA,oDAA4B,EAAC,OAAO,CAAC;QAC3D,kBAAkB,EAAE,IAAA,iDAA0B,EAAC,OAAO,CAAC;QACvD,0BAA0B,EAAE,IAAA,iEAAkC,EAAC,OAAO,CAAC;QACvE,cAAc,EAAE,IAAA,wCAAsB,EAAC,OAAO,CAAC;QAC/C,gDAAgD;QAChD,OAAO,EAAE,IAAA,yBAAe,EAAC,OAAO,CAAC;QACjC,UAAU,EAAE,IAAA,+BAAkB,EAAC,OAAO,CAAC;QACvC,aAAa,EAAE,IAAA,qCAAqB,EAAC,OAAO,CAAC;QAC7C,0EAA0E;QAC1E,WAAW,EAAE,IAAA,kCAAmB,EAAC,OAAO,CAAC;QACzC,MAAM,EAAE,IAAA,yBAAc,EAAC,OAAO,CAAC;QAC/B,KAAK,EAAE,IAAA,wBAAa,EAAC,OAAO,CAAC;QAC7B,eAAe,EAAE,IAAA,kCAAuB,EAAC,OAAO,CAAC;QACjD,GAAG,EAAE,IAAA,iBAAW,EAAC,OAAO,CAAC;QACzB,GAAG,EAAE,IAAA,iBAAW,EAAC,OAAO,CAAC;QACzB,YAAY,EAAE,IAAA,0BAAoB,EAAC,OAAO,CAAC;QAC3C,oBAAoB,EAAE,IAAA,0CAA4B,EAAC,OAAO,CAAC;QAC3D,YAAY,EAAE,IAAA,oCAAoB,EAAC,OAAO,CAAC;QAC3C,mBAAmB,EAAE,IAAA,mDAA2B,EAAC,OAAO,CAAC;QACzD,OAAO,EAAE,IAAA,yBAAe,EAAC,OAAO,CAAC;QACjC,sFAAsF;QACtF,QAAQ,EAAE,IAAA,4BAAgB,EAAC,OAAO,CAAC;QACnC,WAAW,EAAE,IAAA,iCAAmB,EAAC,OAAO,CAAC;QACzC,wEAAwE;QACxE,qBAAqB,EAAE,IAAA,uDAA6B,EAAC,OAAO,CAAC;KAC9D,CAAC;AACJ,CAAC;AAoBD,qCAA4C;AAAnC,0GAAA,eAAe,OAAA;AACxB,iCAA+D;AAAtD,wGAAA,eAAe,OAAA;AACxB,uCAAuD;AAA9C,qHAAA,yBAAyB,OAAA;AAElC,iCAA6D;AAApD,sGAAA,aAAa,OAAA;AACtB,uCAA+C;AAAtC,oGAAA,QAAQ,OAAA;AAAE,mGAAA,OAAO,OAAA;AAE1B,oEAAoE;AACpE,0CAAwB;AACxB,0CAAwB;AACxB,6CAA2B;AAC3B,kDAAgC;AAChC,0CAAwB;AACxB,kDAAgC;AAChC,qDAAmC;AACnC,oDAAkC;AAClC,gDAA8B;AAC9B,4CAA0B;AAC1B,6CAA2B;AAC3B,iDAA+B;AAC/B,sDAAoC;AACpC,iDAA+B;AAC/B,gDAA8B;AAC9B,6CAA2B;AAC3B,mDAAiC;AACjC,+CAA6B;AAC7B,kDAAgC;AAChC,6CAA2B;AAC3B,6CAA2B;AAC3B,oDAAkC;AAClC,mDAAiC;AACjC,sDAAoC;AACpC,wCAAsB;AACtB,+CAA6B;AAC7B,mDAAiC;AACjC,gDAA8B;AAC9B,iDAA+B;AAC/B,gDAA8B;AAC9B,gDAA8B;AAC9B,6CAA2B;AAC3B,oDAAkC;AAClC,kDAAgC;AAChC,kDAAgC;AAChC,4CAA0B;AAC1B,kDAAgC;AAChC,8CAA4B;AAC5B,kDAAgC;AAChC,0DAAwC;AACxC,mDAAiC;AACjC,kDAAgC;AAChC,6CAA2B;AAC3B,sDAAoC;AACpC,2CAAyB;AACzB,4CAA0B;AAC1B,2CAAyB;AACzB,0DAAwC;AACxC,yDAAuC;AACvC,iEAA+C;AAC/C,oDAAkC;AAClC,4CAA0B;AAC1B,+CAA6B;AAC7B,kDAAgC;AAChC,iDAA+B;AAC/B,6CAA2B;AAC3B,wCAAsB;AACtB,wCAAsB;AACtB,gDAA8B;AAC9B,kDAAgC;AAChC,0DAAwC;AACxC,4CAA0B;AAC1B,8CAA4B;AAC5B,gDAA8B;AAC9B,4DAA0C;AAC1C,6CAA2B"}
|
|
@@ -40,6 +40,30 @@ export interface PreflightFinding {
|
|
|
40
40
|
/** Ids of what the finding is about (provider, client_id, domain, …). */
|
|
41
41
|
subject?: Record<string, string>;
|
|
42
42
|
}
|
|
43
|
+
/** An advisory published for an Atlas browser SDK version. */
|
|
44
|
+
export interface SdkAdvisory {
|
|
45
|
+
object: 'sdk_advisory';
|
|
46
|
+
/** e.g. `@atlasauth/react`. */
|
|
47
|
+
package: string;
|
|
48
|
+
/** The affected range, e.g. `<0.8.1`. */
|
|
49
|
+
affected: string;
|
|
50
|
+
fixed_in: string;
|
|
51
|
+
/** Stable code, e.g. `email_code_sign_in`. */
|
|
52
|
+
reason: string;
|
|
53
|
+
severity: 'critical' | 'high' | 'medium' | 'low';
|
|
54
|
+
summary: string;
|
|
55
|
+
/** ISO date. */
|
|
56
|
+
published_at: string;
|
|
57
|
+
}
|
|
58
|
+
/** An Atlas browser SDK version that called this instance recently. */
|
|
59
|
+
export interface SdkVersionSeen {
|
|
60
|
+
package: string;
|
|
61
|
+
version: string;
|
|
62
|
+
/** Epoch ms. */
|
|
63
|
+
last_seen_at: number;
|
|
64
|
+
/** The advisories that apply to this version. */
|
|
65
|
+
advisories: SdkAdvisory[];
|
|
66
|
+
}
|
|
43
67
|
export interface PreflightReport {
|
|
44
68
|
object: 'preflight';
|
|
45
69
|
/** True when there are no error-severity findings. */
|
|
@@ -48,6 +72,8 @@ export interface PreflightReport {
|
|
|
48
72
|
checked_at: number;
|
|
49
73
|
/** Ordered error, then warning, then info. */
|
|
50
74
|
findings: PreflightFinding[];
|
|
75
|
+
/** Atlas browser SDK versions seen in the last 7 days (newest first), with their advisories. */
|
|
76
|
+
sdk_versions_seen?: SdkVersionSeen[];
|
|
51
77
|
}
|
|
52
78
|
/** A consent tool whose documented "reopen preferences" trigger Atlas fills in. */
|
|
53
79
|
export type CookieSettingsLinkPreset = 'cookiemunch' | 'cookiebot' | 'onetrust' | 'custom';
|
|
@@ -71,6 +97,27 @@ export interface CookieSettingsLink {
|
|
|
71
97
|
/** The attributes the rendered link carries: `attributes` plus the preset's trigger. */
|
|
72
98
|
rendered_attributes: Record<string, string>;
|
|
73
99
|
}
|
|
100
|
+
/** One cookie or browser-storage key Atlas writes for the instance (all strictly necessary). */
|
|
101
|
+
export interface DeclaredCookie {
|
|
102
|
+
/** The exact name, or null when `pattern` describes a family of keys. */
|
|
103
|
+
name: string | null;
|
|
104
|
+
/** A `*` wildcard for keys with an id suffix, e.g. `atlasid:*`. */
|
|
105
|
+
pattern: string | null;
|
|
106
|
+
store: 'cookie' | 'localStorage' | 'sessionStorage' | 'indexedDB';
|
|
107
|
+
/** A cookie's Domain (or the exact Frontend API host); for storage, "your app's origin". */
|
|
108
|
+
domain: string;
|
|
109
|
+
/** Seconds; null = browser session (cookie) or until cleared (storage). */
|
|
110
|
+
lifetime_seconds: number | null;
|
|
111
|
+
/** The lifetime in words, for a cookie policy table. */
|
|
112
|
+
lifetime: string;
|
|
113
|
+
http_only: boolean;
|
|
114
|
+
category: 'necessary';
|
|
115
|
+
purpose: string;
|
|
116
|
+
written_when: string;
|
|
117
|
+
set_by: 'atlas_frontend_api' | 'atlas_sdk';
|
|
118
|
+
}
|
|
119
|
+
/** `page` (default): the consent tag carries the page language; `browser`: no attribute. */
|
|
120
|
+
export type CookieConsentCulture = 'page' | 'browser';
|
|
74
121
|
/** The cookie-consent script injected into the hosted sign-in, sign-up and account pages. */
|
|
75
122
|
export interface CookieConsent {
|
|
76
123
|
object: 'cookie_consent';
|
|
@@ -83,6 +130,9 @@ export interface CookieConsent {
|
|
|
83
130
|
extra_origins?: string[];
|
|
84
131
|
/** The footer "Cookie settings" link, or null when none is set. */
|
|
85
132
|
settings_link?: CookieSettingsLink | null;
|
|
133
|
+
culture?: CookieConsentCulture;
|
|
134
|
+
/** Every cookie and browser-storage key Atlas writes for this instance, for your cookie policy. */
|
|
135
|
+
declared_cookies?: DeclaredCookie[];
|
|
86
136
|
}
|
|
87
137
|
export interface SetCookieConsentBody {
|
|
88
138
|
/** Your consent script URL. Must be https; its origin is added to the page CSP. */
|
|
@@ -97,12 +147,154 @@ export interface SetCookieConsentBody {
|
|
|
97
147
|
extra_origins?: string[];
|
|
98
148
|
/** A footer "Cookie settings" link that reopens the consent preferences; null or omitted for none. */
|
|
99
149
|
settings_link?: CookieSettingsLinkInput | null;
|
|
150
|
+
/** `page` (default) tags the consent script with the page language; `browser` leaves it to the tool. */
|
|
151
|
+
culture?: CookieConsentCulture | null;
|
|
152
|
+
}
|
|
153
|
+
/** `POST /v1/instance/move_origin` (and the platform app twin). */
|
|
154
|
+
export interface OriginMoveRequest {
|
|
155
|
+
/** The old origin, `scheme://host[:port]`. */
|
|
156
|
+
from: string;
|
|
157
|
+
/** The new origin: https, or http only for localhost. */
|
|
158
|
+
to: string;
|
|
159
|
+
/** `true` reports the diff and any problems and writes nothing. */
|
|
160
|
+
dry_run?: boolean;
|
|
161
|
+
}
|
|
162
|
+
export interface OriginMoveChange {
|
|
163
|
+
object: 'instance' | 'oauth_client' | 'atlas_id_app' | 'webhook_endpoint' | 'redirect_url';
|
|
164
|
+
id: string;
|
|
165
|
+
/** e.g. `allowed_origins`, `redirect_uris`, `homepage_url`, `branding.legal.privacyUrl`. */
|
|
166
|
+
field: string;
|
|
167
|
+
before: string | string[] | null;
|
|
168
|
+
after: string | string[] | null;
|
|
169
|
+
}
|
|
170
|
+
export interface OriginMoveProblem {
|
|
171
|
+
object?: string;
|
|
172
|
+
id?: string;
|
|
173
|
+
field?: string;
|
|
174
|
+
url?: string;
|
|
175
|
+
message?: string;
|
|
176
|
+
}
|
|
177
|
+
/** The before → after diff of an origin move. A repeated run returns no changes. */
|
|
178
|
+
export interface OriginMove {
|
|
179
|
+
object: 'origin_move';
|
|
180
|
+
from: string;
|
|
181
|
+
to: string;
|
|
182
|
+
dry_run: boolean;
|
|
183
|
+
/** True when this run wrote changes. */
|
|
184
|
+
applied: boolean;
|
|
185
|
+
changes: OriginMoveChange[];
|
|
186
|
+
/** Values the field would refuse; a real run with problems is a 422 and writes nothing. */
|
|
187
|
+
problems: OriginMoveProblem[];
|
|
188
|
+
/** Platform app twin only: the app after the move. */
|
|
189
|
+
app?: Record<string, unknown>;
|
|
190
|
+
}
|
|
191
|
+
/** One link from this instance to another platform, and its health. */
|
|
192
|
+
export interface InstanceConnection {
|
|
193
|
+
object: 'connection';
|
|
194
|
+
kind: 'privacy_webhook' | 'cmp' | 'atlas_id_app' | 'jwt_template';
|
|
195
|
+
/** What was checked, e.g. `privacy_webhook_delivery`, `cmp_site`. */
|
|
196
|
+
check: string;
|
|
197
|
+
ok: boolean;
|
|
198
|
+
severity: 'error' | 'warning' | 'info';
|
|
199
|
+
subject: Record<string, string>;
|
|
200
|
+
/** What to do when `ok` is false. */
|
|
201
|
+
fix_hint: string | null;
|
|
202
|
+
/** Epoch ms. */
|
|
203
|
+
last_checked_at: number;
|
|
204
|
+
/** Kind-specific facts. */
|
|
205
|
+
details: Record<string, unknown>;
|
|
206
|
+
}
|
|
207
|
+
export interface InstanceConnections {
|
|
208
|
+
object: 'instance_connections';
|
|
209
|
+
/** False when any warning- or error-severity row is not ok. */
|
|
210
|
+
ok: boolean;
|
|
211
|
+
checked_at: number;
|
|
212
|
+
data: InstanceConnection[];
|
|
213
|
+
}
|
|
214
|
+
/** The Chatly connection (`enabled: false` and nothing else when none is set). */
|
|
215
|
+
export interface ChatlyIntegration {
|
|
216
|
+
object: 'chatly_integration';
|
|
217
|
+
enabled: boolean;
|
|
218
|
+
channel?: string;
|
|
219
|
+
/** The template name to pass to `getToken({ template: 'chatly' })`. */
|
|
220
|
+
template?: 'chatly';
|
|
221
|
+
/** `chatly:<channel>`. */
|
|
222
|
+
audience?: string;
|
|
223
|
+
issuer?: string;
|
|
224
|
+
jwks_url?: string;
|
|
225
|
+
token_ttl_seconds?: number;
|
|
226
|
+
identity_verification?: {
|
|
227
|
+
mode?: 'oidc';
|
|
228
|
+
issuer?: string;
|
|
229
|
+
jwks_url?: string;
|
|
230
|
+
audience?: string;
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
export interface SetChatlyIntegrationBody {
|
|
234
|
+
/** The chat channel public id (letters, digits, `_` and `-`). */
|
|
235
|
+
channel: string;
|
|
236
|
+
}
|
|
237
|
+
/** The Forumulate connection (`enabled: false` and nothing else when none is set). */
|
|
238
|
+
export interface ForumulateIntegration {
|
|
239
|
+
object: 'forumulate_integration';
|
|
240
|
+
enabled: boolean;
|
|
241
|
+
org_id?: string;
|
|
242
|
+
spaces?: Array<{
|
|
243
|
+
id: string;
|
|
244
|
+
redeem_url: string;
|
|
245
|
+
}>;
|
|
246
|
+
audience?: string;
|
|
247
|
+
issuer?: string;
|
|
248
|
+
jwks_url?: string;
|
|
249
|
+
token_ttl_seconds?: number;
|
|
250
|
+
/** The external_jwt provider to store on each space. */
|
|
251
|
+
reader_auth_provider?: {
|
|
252
|
+
method?: 'external_jwt';
|
|
253
|
+
order?: number;
|
|
254
|
+
config?: {
|
|
255
|
+
jwksUrl?: string;
|
|
256
|
+
issuer?: string;
|
|
257
|
+
clientId?: string;
|
|
258
|
+
};
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
export interface SetForumulateIntegrationBody {
|
|
262
|
+
org_id: string;
|
|
263
|
+
/** 1-50 space ids, or `{ id, redeem_url }`. */
|
|
264
|
+
spaces: Array<string | {
|
|
265
|
+
id: string;
|
|
266
|
+
redeem_url?: string | null;
|
|
267
|
+
}>;
|
|
268
|
+
/** The token `aud`. Default `forumulate:<org_id>`. */
|
|
269
|
+
audience?: string | null;
|
|
100
270
|
}
|
|
101
271
|
export declare function instanceResource(request: RequestFn): {
|
|
102
272
|
get(): Promise<Instance>;
|
|
103
273
|
update(body: UpdateInstanceBody): Promise<InstanceUpdateResult>;
|
|
104
274
|
/** Check your setup in one call: configuration the server can see is broken or risky. */
|
|
105
275
|
preflight(): Promise<PreflightReport>;
|
|
276
|
+
/**
|
|
277
|
+
* Move every URL that points at one origin to another (a domain move), across
|
|
278
|
+
* the instance, its OAuth clients, webhooks, redirect URLs and Sign in with
|
|
279
|
+
* Atlas apps. `dry_run: true` writes nothing.
|
|
280
|
+
*/
|
|
281
|
+
moveOrigin(body: OriginMoveRequest): Promise<OriginMove>;
|
|
282
|
+
/** The instance's links to other platforms and their health. Read-only. */
|
|
283
|
+
connections(): Promise<InstanceConnections>;
|
|
284
|
+
/** Built-in connections to other platforms. */
|
|
285
|
+
integrations: {
|
|
286
|
+
chatly: {
|
|
287
|
+
get(): Promise<ChatlyIntegration>;
|
|
288
|
+
set(body: SetChatlyIntegrationBody): Promise<ChatlyIntegration>;
|
|
289
|
+
delete(): Promise<ChatlyIntegration>;
|
|
290
|
+
};
|
|
291
|
+
forumulate: {
|
|
292
|
+
get(): Promise<ForumulateIntegration>;
|
|
293
|
+
/** Replaces the whole connection. */
|
|
294
|
+
set(body: SetForumulateIntegrationBody): Promise<ForumulateIntegration>;
|
|
295
|
+
delete(): Promise<ForumulateIntegration>;
|
|
296
|
+
};
|
|
297
|
+
};
|
|
106
298
|
/** The cookie-consent script on the hosted pages (any provider). */
|
|
107
299
|
cookieConsent: {
|
|
108
300
|
get(): Promise<CookieConsent>;
|