@atlasauth/backend 0.17.0 → 0.19.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.
Files changed (93) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/dist/backchannel-handlers.d.ts +87 -0
  3. package/dist/backchannel-handlers.js +137 -0
  4. package/dist/backchannel-handlers.js.map +1 -0
  5. package/dist/client/activity.d.ts +13 -2
  6. package/dist/client/activity.js.map +1 -1
  7. package/dist/client/audit-logs.d.ts +7 -0
  8. package/dist/client/audit-logs.js.map +1 -1
  9. package/dist/client/compliance.d.ts +216 -0
  10. package/dist/client/compliance.js +77 -0
  11. package/dist/client/compliance.js.map +1 -0
  12. package/dist/client/credentials.d.ts +409 -0
  13. package/dist/client/credentials.js +158 -0
  14. package/dist/client/credentials.js.map +1 -0
  15. package/dist/client/data-subject-requests.d.ts +36 -1
  16. package/dist/client/data-subject-requests.js.map +1 -1
  17. package/dist/client/design.d.ts +48 -0
  18. package/dist/client/design.js +9 -0
  19. package/dist/client/design.js.map +1 -1
  20. package/dist/client/entitlement-overrides.d.ts +30 -0
  21. package/dist/client/entitlement-overrides.js +9 -0
  22. package/dist/client/entitlement-overrides.js.map +1 -1
  23. package/dist/client/env.d.ts +16 -0
  24. package/dist/client/env.js +38 -0
  25. package/dist/client/env.js.map +1 -0
  26. package/dist/client/error.d.ts +10 -0
  27. package/dist/client/error.js +4 -0
  28. package/dist/client/error.js.map +1 -1
  29. package/dist/client/index.d.ts +382 -7
  30. package/dist/client/index.js +44 -1
  31. package/dist/client/index.js.map +1 -1
  32. package/dist/client/instance.d.ts +401 -3
  33. package/dist/client/instance.js +77 -3
  34. package/dist/client/instance.js.map +1 -1
  35. package/dist/client/integrations.d.ts +107 -0
  36. package/dist/client/integrations.js +25 -0
  37. package/dist/client/integrations.js.map +1 -0
  38. package/dist/client/messaging.d.ts +18 -4
  39. package/dist/client/messaging.js +6 -2
  40. package/dist/client/messaging.js.map +1 -1
  41. package/dist/client/oauth-clients.d.ts +11 -3
  42. package/dist/client/oauth-clients.js +4 -2
  43. package/dist/client/oauth-clients.js.map +1 -1
  44. package/dist/client/operator.d.ts +100 -0
  45. package/dist/client/operator.js +132 -0
  46. package/dist/client/operator.js.map +1 -0
  47. package/dist/client/platform.d.ts +233 -9
  48. package/dist/client/platform.js +74 -6
  49. package/dist/client/platform.js.map +1 -1
  50. package/dist/client/policies.d.ts +316 -0
  51. package/dist/client/policies.js +103 -0
  52. package/dist/client/policies.js.map +1 -0
  53. package/dist/client/privacy.d.ts +127 -0
  54. package/dist/client/privacy.js +44 -0
  55. package/dist/client/privacy.js.map +1 -0
  56. package/dist/client/referrals.d.ts +53 -6
  57. package/dist/client/referrals.js +9 -0
  58. package/dist/client/referrals.js.map +1 -1
  59. package/dist/client/request.d.ts +38 -1
  60. package/dist/client/request.js +6 -2
  61. package/dist/client/request.js.map +1 -1
  62. package/dist/client/sealed-box.d.ts +7 -0
  63. package/dist/client/sealed-box.js +62 -0
  64. package/dist/client/sealed-box.js.map +1 -0
  65. package/dist/client/sessions.d.ts +16 -5
  66. package/dist/client/sessions.js +7 -10
  67. package/dist/client/sessions.js.map +1 -1
  68. package/dist/client/status.d.ts +200 -0
  69. package/dist/client/status.js +54 -0
  70. package/dist/client/status.js.map +1 -0
  71. package/dist/client/users.d.ts +15 -0
  72. package/dist/client/webhooks.d.ts +244 -11
  73. package/dist/client/webhooks.js +52 -3
  74. package/dist/client/webhooks.js.map +1 -1
  75. package/dist/index.d.ts +9 -6
  76. package/dist/index.js +20 -4
  77. package/dist/index.js.map +1 -1
  78. package/dist/oidc.d.ts +65 -1
  79. package/dist/oidc.js +46 -0
  80. package/dist/oidc.js.map +1 -1
  81. package/dist/policy-source.d.ts +104 -0
  82. package/dist/policy-source.js +99 -0
  83. package/dist/policy-source.js.map +1 -0
  84. package/dist/referral-test-calls.d.ts +26 -13
  85. package/dist/referral-test-calls.js +40 -14
  86. package/dist/referral-test-calls.js.map +1 -1
  87. package/dist/testing.d.ts +41 -6
  88. package/dist/testing.js +34 -2
  89. package/dist/testing.js.map +1 -1
  90. package/dist/webhooks.d.ts +8 -0
  91. package/dist/webhooks.js +13 -4
  92. package/dist/webhooks.js.map +1 -1
  93. package/package.json +6 -3
@@ -10,8 +10,20 @@ function instanceResource(request) {
10
10
  return request({ method: 'PATCH', path: '/v1/instance', body });
11
11
  },
12
12
  /** Check your setup in one call: configuration the server can see is broken or risky. */
13
- preflight() {
14
- return request({ method: 'GET', path: '/v1/instance/preflight' });
13
+ preflight(params = {}) {
14
+ return request({ method: 'GET', path: '/v1/instance/preflight', query: { ...params } });
15
+ },
16
+ /**
17
+ * The unknown body fields your writes sent over the last `days` (1-90,
18
+ * default 30): fix every row with an `ignored_count`, then turn
19
+ * `auth_config.strictRequestBodies` on.
20
+ */
21
+ unknownFieldsReport(params = {}) {
22
+ return request({ method: 'GET', path: '/v1/instance/unknown_fields_report', query: { ...params } });
23
+ },
24
+ /** What changed in the API since a date (YYYY-MM-DD): operations added, deprecated and removed. */
25
+ openapiDiff(params) {
26
+ return request({ method: 'GET', path: '/v1/openapi/diff', query: { ...params } });
15
27
  },
16
28
  /**
17
29
  * Move every URL that points at one origin to another (a domain move), across
@@ -21,12 +33,74 @@ function instanceResource(request) {
21
33
  moveOrigin(body) {
22
34
  return request({ method: 'POST', path: '/v1/instance/move_origin', body });
23
35
  },
36
+ /**
37
+ * One report of everything that connects the instance to the outside world
38
+ * (setup checks, webhooks with the failing hop, back-channel logout,
39
+ * referrals, email, consent manager, SDK versions). `only` limits the
40
+ * sources; `probe: false` skips live reachability probes.
41
+ */
42
+ integrationHealth(params = {}) {
43
+ return request({
44
+ method: 'GET',
45
+ path: '/v1/integration-health',
46
+ query: { only: params.only?.join(','), probe: params.probe === undefined ? undefined : String(params.probe) },
47
+ });
48
+ },
49
+ /** The integration-health check sources this deployment reports. */
50
+ integrationHealthProviders() {
51
+ return request({ method: 'GET', path: '/v1/integration-health/providers' });
52
+ },
53
+ /**
54
+ * The embed manifest for an instance (public; no key needed): CSP sources per
55
+ * surface with its hosts filled in, and the merged policy in `tenant.policy`.
56
+ */
57
+ embed(params) {
58
+ return request({ method: 'GET', path: '/v1/embed', query: { ...params } });
59
+ },
24
60
  /** The instance's links to other platforms and their health. Read-only. */
25
61
  connections() {
26
62
  return request({ method: 'GET', path: '/v1/instance/connections' });
27
63
  },
28
- /** Built-in connections to other platforms. */
64
+ /**
65
+ * Identity integrations: presets and custom integrations (generic), plus the
66
+ * earlier per-product helpers (`chatly`, `forumulate`) on the same records.
67
+ */
29
68
  integrations: {
69
+ /** Every integration (the presets, connected or not, and every custom one) with its health. */
70
+ list() {
71
+ return request({ method: 'GET', path: '/v1/instance/integrations' });
72
+ },
73
+ get(id) {
74
+ return request({ method: 'GET', path: `/v1/instance/integrations/${encodeURIComponent(id)}` });
75
+ },
76
+ /** Connect or replace an integration. `{ dryRun: true }` validates and saves nothing. */
77
+ set(id, body, opts = {}) {
78
+ return request({
79
+ method: 'PUT',
80
+ path: `/v1/instance/integrations/${encodeURIComponent(id)}`,
81
+ body,
82
+ ...(opts.dryRun ? { query: { dry_run: 'true' } } : {}),
83
+ });
84
+ },
85
+ remove(id) {
86
+ return request({ method: 'DELETE', path: `/v1/instance/integrations/${encodeURIComponent(id)}` });
87
+ },
88
+ /** Event and back-channel logout deliveries, newest first; `trace` finds one operation. */
89
+ deliveries(id, query = {}) {
90
+ return request({ method: 'GET', path: `/v1/instance/integrations/${encodeURIComponent(id)}/deliveries`, query });
91
+ },
92
+ /** Reveal the event receiver's signing secret (audited). */
93
+ revealEventsSecret(id) {
94
+ return request({ method: 'POST', path: `/v1/instance/integrations/${encodeURIComponent(id)}/events_secret` });
95
+ },
96
+ /** An integration token for a Sign in with Atlas user (their Atlas ID access token). */
97
+ atlasIdToken(id, accessToken) {
98
+ return request({
99
+ method: 'POST',
100
+ path: `/v1/instance/integrations/${encodeURIComponent(id)}/atlas_id_tokens`,
101
+ body: { access_token: accessToken },
102
+ });
103
+ },
30
104
  chatly: {
31
105
  get() {
32
106
  return request({ method: 'GET', path: '/v1/instance/integrations/chatly' });
@@ -1 +1 @@
1
- {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../src/client/instance.ts"],"names":[],"mappings":";;AAwTA,4CAiEC;AAjED,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,MAAM,CAAC,IAAwB;YAC7B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,yFAAyF;QACzF,SAAS;YACP,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;QACpE,CAAC;QACD;;;;WAIG;QACH,UAAU,CAAC,IAAuB;YAChC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,2EAA2E;QAC3E,WAAW;YACT,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,+CAA+C;QAC/C,YAAY,EAAE;YACZ,MAAM,EAAE;gBACN,GAAG;oBACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,kCAAkC,EAAE,CAAC,CAAC;gBAC9E,CAAC;gBACD,GAAG,CAAC,IAA8B;oBAChC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpF,CAAC;gBACD,MAAM;oBACJ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,kCAAkC,EAAE,CAAC,CAAC;gBACjF,CAAC;aACF;YACD,UAAU,EAAE;gBACV,GAAG;oBACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,sCAAsC,EAAE,CAAC,CAAC;gBAClF,CAAC;gBACD,qCAAqC;gBACrC,GAAG,CAAC,IAAkC;oBACpC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,sCAAsC,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxF,CAAC;gBACD,MAAM;oBACJ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,sCAAsC,EAAE,CAAC,CAAC;gBACrF,CAAC;aACF;SACF;QACD,oEAAoE;QACpE,aAAa,EAAE;YACb,GAAG;gBACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,kCAAkC;YAClC,GAAG,CAAC,IAA0B;gBAC5B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/E,CAAC;YACD,+EAA+E;YAC/E,MAAM;gBACJ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAC;YAC5E,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../src/client/instance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,107 @@
1
+ import { type RequestFn } from './request';
2
+ /**
3
+ * The integration-facing routes, called with the instance secret key (an
4
+ * integrated service calls the same routes with the partner link the instance
5
+ * owner granted it): report a token a service refused, read the agent-sidebar
6
+ * card for a user and run its actions, and read an instance's public metadata.
7
+ */
8
+ export type IntegrationVerifyErrorCode = 'aud_mismatch' | 'expired' | 'bad_signature' | 'unknown_kid' | 'session_revoked' | 'invalid_claims' | 'other';
9
+ export interface ReportVerifyErrorBody {
10
+ /** The integration id the token was minted for (a preset or a custom id). */
11
+ integration: string;
12
+ error: IntegrationVerifyErrorCode;
13
+ audience?: string;
14
+ /** Epoch ms (or seconds) or an ISO time. Default now. */
15
+ at?: number | string;
16
+ kid?: string;
17
+ sid?: string;
18
+ detail?: string;
19
+ }
20
+ export interface IntegrationVerifyError {
21
+ object: 'integration_verify_error';
22
+ id: string;
23
+ integration: string;
24
+ audience: string | null;
25
+ error: IntegrationVerifyErrorCode;
26
+ at: number;
27
+ trace_id: string | null;
28
+ created_at: number;
29
+ }
30
+ export interface IntegrationCard {
31
+ object: 'integration_card';
32
+ integration: string;
33
+ user: {
34
+ id: string;
35
+ email: string | null;
36
+ email_verified: boolean;
37
+ name: string | null;
38
+ external_id: string | null;
39
+ banned: boolean;
40
+ mfa_enabled: boolean;
41
+ last_sign_in_at: number | null;
42
+ created_at: number;
43
+ organizations: Array<{
44
+ id: string;
45
+ name: string;
46
+ role: string;
47
+ }>;
48
+ };
49
+ sessions_active: number;
50
+ actions: Array<{
51
+ id: 'revoke_sessions';
52
+ label: string;
53
+ confirm: boolean;
54
+ available: boolean;
55
+ requires_scope: string;
56
+ }>;
57
+ }
58
+ export interface InstanceMetadata {
59
+ object: 'instance_metadata';
60
+ id: string;
61
+ issuer: string;
62
+ jwks_uri: string;
63
+ token_schema: string;
64
+ integrations: Record<string, {
65
+ audience: string;
66
+ preset: string | null;
67
+ ttl_seconds: number;
68
+ additional_issuers?: string[];
69
+ }>;
70
+ trusted_issuers: Array<{
71
+ issuer: string;
72
+ jwks_uri: string;
73
+ kind: 'instance' | 'atlas_id';
74
+ }>;
75
+ previous_issuers: Array<{
76
+ issuer: string;
77
+ jwks_uri: string;
78
+ replaced_at: number;
79
+ }>;
80
+ }
81
+ export declare function integrationsResource(request: RequestFn): {
82
+ /** `POST /v1/integrations/verify_errors` — record a token an integrated service refused. */
83
+ reportVerifyError(body: ReportVerifyErrorBody): Promise<IntegrationVerifyError>;
84
+ /** `GET /v1/integrations/:integration/card` — the agent-sidebar card for a user (by token sub). */
85
+ card(integration: string, query: {
86
+ sub: string;
87
+ iss?: string;
88
+ }): Promise<IntegrationCard>;
89
+ /** `POST /v1/integrations/:integration/card/actions/revoke_sessions` — sign the user out everywhere (audited with the agent). */
90
+ revokeSessions(integration: string, body: {
91
+ sub: string;
92
+ iss?: string;
93
+ agent?: {
94
+ id?: string;
95
+ name?: string;
96
+ email?: string;
97
+ };
98
+ }): Promise<{
99
+ object: "integration_card_action";
100
+ integration: string;
101
+ action: "revoke_sessions";
102
+ ok: boolean;
103
+ sessions_revoked: number;
104
+ }>;
105
+ /** `GET /v1/public/instances/:id` — the public metadata of an instance (no key needed). */
106
+ instanceMetadata(instanceId: string): Promise<InstanceMetadata>;
107
+ };
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.integrationsResource = integrationsResource;
4
+ const request_1 = require("./request");
5
+ function integrationsResource(request) {
6
+ return {
7
+ /** `POST /v1/integrations/verify_errors` — record a token an integrated service refused. */
8
+ reportVerifyError(body) {
9
+ return request({ method: 'POST', path: '/v1/integrations/verify_errors', body });
10
+ },
11
+ /** `GET /v1/integrations/:integration/card` — the agent-sidebar card for a user (by token sub). */
12
+ card(integration, query) {
13
+ return request({ method: 'GET', path: `/v1/integrations/${(0, request_1.enc)(integration)}/card`, query });
14
+ },
15
+ /** `POST /v1/integrations/:integration/card/actions/revoke_sessions` — sign the user out everywhere (audited with the agent). */
16
+ revokeSessions(integration, body) {
17
+ return request({ method: 'POST', path: `/v1/integrations/${(0, request_1.enc)(integration)}/card/actions/revoke_sessions`, body });
18
+ },
19
+ /** `GET /v1/public/instances/:id` — the public metadata of an instance (no key needed). */
20
+ instanceMetadata(instanceId) {
21
+ return request({ method: 'GET', path: `/v1/public/instances/${(0, request_1.enc)(instanceId)}` });
22
+ },
23
+ };
24
+ }
25
+ //# sourceMappingURL=integrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/client/integrations.ts"],"names":[],"mappings":";;AAuEA,oDAsBC;AA7FD,uCAAgD;AAuEhD,SAAgB,oBAAoB,CAAC,OAAkB;IACrD,OAAO;QACL,4FAA4F;QAC5F,iBAAiB,CAAC,IAA2B;YAC3C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,EAAE,IAAI,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,mGAAmG;QACnG,IAAI,CAAC,WAAmB,EAAE,KAAoC;YAC5D,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,IAAA,aAAG,EAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,iIAAiI;QACjI,cAAc,CACZ,WAAmB,EACnB,IAA2F;YAE3F,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,IAAA,aAAG,EAAC,WAAW,CAAC,+BAA+B,EAAE,IAAI,EAAE,CAAC,CAAC;QACtH,CAAC;QACD,2FAA2F;QAC3F,gBAAgB,CAAC,UAAkB;YACjC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,IAAA,aAAG,EAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -278,6 +278,16 @@ export type SmsProvider = {
278
278
  }[SmsTransport];
279
279
  /** Either channel's provider. Narrow on `transport` (or `channel`) to read its config. */
280
280
  export type MessagingProvider = EmailProvider | SmsProvider;
281
+ /**
282
+ * What a singleton GET returns when nothing is configured yet (never a 404).
283
+ * A configured object carries `configured: true`.
284
+ */
285
+ export interface NotConfigured<O extends string = string> {
286
+ object: O;
287
+ configured: false;
288
+ /** What to call to configure it. */
289
+ message?: string;
290
+ }
281
291
  export interface MessagingProviders {
282
292
  object: 'messaging_providers';
283
293
  email: EmailProvider | null;
@@ -429,6 +439,10 @@ type LegacyInput<T extends string> = Omit<MessagingProviderInput, 'transport'> &
429
439
  export declare function messagingResource(request: RequestFn): {
430
440
  /** The instance's configured email and SMS providers, secrets omitted. */
431
441
  get(): Promise<MessagingProviders>;
442
+ /** One channel's provider, or `{ configured: false, channel }` when none is set. */
443
+ channel<C extends "email" | "sms">(channel: C): Promise<(C extends "email" ? EmailProvider : SmsProvider) | (NotConfigured<"messaging_provider"> & {
444
+ channel: C;
445
+ })>;
432
446
  /**
433
447
  * Configure (or update) the email provider. `config` keys are checked per
434
448
  * `transport`; on an update of the same transport, omitted keys — including
@@ -462,8 +476,8 @@ export declare function messagingResource(request: RequestFn): {
462
476
  * Atlas's sign-in emails without a verified domain ([Atlas test] subjects, capped).
463
477
  */
464
478
  developmentEmail: {
465
- /** 404 when the provider is not in development mode. */
466
- get(): Promise<DevelopmentEmail>;
479
+ /** `{ configured: false }` when the provider is not in development mode. */
480
+ get(): Promise<DevelopmentEmail | NotConfigured<"development_email">>;
467
481
  /** Turn development mode on. 409 `DEVELOPMENT_EMAIL_NOT_ALLOWED` on a production instance. */
468
482
  enable(body: EnableDevelopmentEmailBody): Promise<DevelopmentEmail>;
469
483
  /** Back to standard mode; the provider stays. */
@@ -476,8 +490,8 @@ export declare function messagingResource(request: RequestFn): {
476
490
  };
477
491
  /** Managed email: Atlas sets your sending domain up on your own Resend or Brevo account. */
478
492
  managedEmail: {
479
- /** 404 when none is configured. */
480
- get(): Promise<ManagedEmail>;
493
+ /** `{ configured: false }` when none is configured. */
494
+ get(): Promise<ManagedEmail | NotConfigured<"managed_email">>;
481
495
  /** Register the sending domain; returns the DNS `records` to publish. */
482
496
  create(body: CreateManagedEmailBody): Promise<ManagedEmail>;
483
497
  /** Re-check the DNS records now; `verified` is true once email can be sent. */
@@ -14,6 +14,10 @@ function messagingResource(request) {
14
14
  get() {
15
15
  return request({ method: 'GET', path: '/v1/messaging_providers' });
16
16
  },
17
+ /** One channel's provider, or `{ configured: false, channel }` when none is set. */
18
+ channel(channel) {
19
+ return request({ method: 'GET', path: `/v1/messaging_providers/${channel}` });
20
+ },
17
21
  /**
18
22
  * Configure (or update) the email provider. `config` keys are checked per
19
23
  * `transport`; on an update of the same transport, omitted keys — including
@@ -45,7 +49,7 @@ function messagingResource(request) {
45
49
  * Atlas's sign-in emails without a verified domain ([Atlas test] subjects, capped).
46
50
  */
47
51
  developmentEmail: {
48
- /** 404 when the provider is not in development mode. */
52
+ /** `{ configured: false }` when the provider is not in development mode. */
49
53
  get() {
50
54
  return request({ method: 'GET', path: '/v1/messaging_providers/email/development' });
51
55
  },
@@ -60,7 +64,7 @@ function messagingResource(request) {
60
64
  },
61
65
  /** Managed email: Atlas sets your sending domain up on your own Resend or Brevo account. */
62
66
  managedEmail: {
63
- /** 404 when none is configured. */
67
+ /** `{ configured: false }` when none is configured. */
64
68
  get() {
65
69
  return request({ method: 'GET', path: '/v1/messaging_providers/email/managed' });
66
70
  },
@@ -1 +1 @@
1
- {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../src/client/messaging.ts"],"names":[],"mappings":";;AAydA,8CAuGC;AAhkBD,uCAAgD;AAydhD,SAAgB,iBAAiB,CAAC,OAAkB;IAIlD,SAAS,QAAQ,CAAC,IAAa;QAC7B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,+BAA+B,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,CAAC;IAKD,SAAS,MAAM,CAAC,IAAa;QAC3B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,OAAO;QACL,0EAA0E;QAC1E,GAAG;YACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;QACrE,CAAC;QACD;;;;WAIG;QACH,QAAQ;QACR;;;;WAIG;QACH,MAAM;QACN;;;;;;WAMG;QACH,aAAa,CACX,OAAwB,EACxB,UAA+B,EAAE;YAEjC,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,2BAA2B,IAAA,aAAG,EAAC,OAAO,CAAC,EAAE;gBAC/C,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvD,CAAC,CAAC;QACL,CAAC;QACD;;;WAGG;QACH,gBAAgB,EAAE;YAChB,wDAAwD;YACxD,GAAG;gBACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,2CAA2C,EAAE,CAAC,CAAC;YACvF,CAAC;YACD,8FAA8F;YAC9F,MAAM,CAAC,IAAgC;gBACrC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2CAA2C,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9F,CAAC;YACD,iDAAiD;YACjD,OAAO;gBACL,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,2CAA2C,EAAE,CAAC,CAAC;YAC1F,CAAC;SACF;QACD,4FAA4F;QAC5F,YAAY,EAAE;YACZ,mCAAmC;YACnC,GAAG;gBACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,uCAAuC,EAAE,CAAC,CAAC;YACnF,CAAC;YACD,yEAAyE;YACzE,MAAM,CAAC,IAA4B;gBACjC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1F,CAAC;YACD,+EAA+E;YAC/E,MAAM;gBACJ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,8CAA8C,EAAE,CAAC,CAAC;YAC3F,CAAC;YACD;;;;eAIG;YACH,MAAM,CAAC,UAA+B,EAAE;gBACtC,OAAO,OAAO,CAAC;oBACb,MAAM,EAAE,QAAQ;oBAChB,IAAI,EAAE,uCAAuC;oBAC7C,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACvD,CAAC,CAAC;YACL,CAAC;SACF;QACD,gFAAgF;QAChF,IAAI,CAAC,OAAwB,EAAE,IAAoB;YACjD,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,2BAA2B,IAAA,aAAG,EAAC,OAAO,CAAC,OAAO;gBACpD,IAAI;aACL,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../../src/client/messaging.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
+ import { type ProvisioningFields, type ProvisioningInput, type ProvisioningMetadata } from './compliance';
1
2
  import { type RequestFn } from './request';
2
3
  import type { ListPage } from './types';
3
- export interface OAuthClient {
4
+ export interface OAuthClient extends ProvisioningFields {
4
5
  object: 'oauth_client';
5
6
  id: string;
6
7
  client_id: string;
@@ -147,7 +148,7 @@ export interface ClientGrant {
147
148
  created_at: number;
148
149
  updated_at: number;
149
150
  }
150
- export interface CreateOAuthClientBody extends OAuthClientLogoutFields, OAuthClientSubjectFields, OAuthClientTokenFields {
151
+ export interface CreateOAuthClientBody extends ProvisioningInput, OAuthClientLogoutFields, OAuthClientSubjectFields, OAuthClientTokenFields {
151
152
  name: string;
152
153
  redirect_uris: string[];
153
154
  allowed_scopes?: string[];
@@ -157,8 +158,12 @@ export interface CreateOAuthClientBody extends OAuthClientLogoutFields, OAuthCli
157
158
  first_party?: boolean;
158
159
  /** How long the issued secret authenticates, in seconds; omit for no expiry. */
159
160
  secret_expires_in_seconds?: number;
161
+ /** Require PKCE. New clients default to true (confidential ones included); send false to opt out. */
162
+ require_pkce?: boolean;
160
163
  }
161
164
  export interface UpdateOAuthClientBody extends OAuthClientLogoutFields, OAuthClientSubjectFields, OAuthClientTokenFields {
165
+ /** Replaces the provisioning metadata. */
166
+ metadata?: ProvisioningMetadata;
162
167
  name?: string;
163
168
  redirect_uris?: string[];
164
169
  allowed_scopes?: string[];
@@ -250,7 +255,10 @@ export declare function oauthClientsResource(request: RequestFn): {
250
255
  import(body: {
251
256
  clients: ImportOAuthClientEntry[];
252
257
  }, idempotencyKey?: string): Promise<ListPage<ImportedOAuthClient>>;
253
- list(): Promise<ListPage<OAuthClient>>;
258
+ /** `metadata` filters on provisioning tags (`?metadata[key]=value`). */
259
+ list(params?: {
260
+ metadata?: ProvisioningMetadata;
261
+ }): Promise<ListPage<OAuthClient>>;
254
262
  get(id: string): Promise<OAuthClient>;
255
263
  create(body: CreateOAuthClientBody, idempotencyKey?: string): Promise<OAuthClientWithSecret>;
256
264
  update(id: string, body: UpdateOAuthClientBody): Promise<OAuthClient>;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.oauthClientsResource = oauthClientsResource;
4
+ const compliance_1 = require("./compliance");
4
5
  const request_1 = require("./request");
5
6
  function oauthClientsResource(request) {
6
7
  return {
@@ -8,8 +9,9 @@ function oauthClientsResource(request) {
8
9
  import(body, idempotencyKey) {
9
10
  return request({ method: 'POST', path: '/v1/oauth_clients/import', body, idempotencyKey });
10
11
  },
11
- list() {
12
- return request({ method: 'GET', path: '/v1/oauth_clients' });
12
+ /** `metadata` filters on provisioning tags (`?metadata[key]=value`). */
13
+ list(params = {}) {
14
+ return request({ method: 'GET', path: '/v1/oauth_clients', query: (0, compliance_1.metadataQuery)(params.metadata) });
13
15
  },
14
16
  get(id) {
15
17
  return request({ method: 'GET', path: `/v1/oauth_clients/${(0, request_1.enc)(id)}` });
@@ -1 +1 @@
1
- {"version":3,"file":"oauth-clients.js","sourceRoot":"","sources":["../../src/client/oauth-clients.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"oauth-clients.js","sourceRoot":"","sources":["../../src/client/oauth-clients.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Operator sign-in (`atlas login`) and token exchange, without a long-lived key.
3
+ *
4
+ * 1. `startOperatorLogin()` runs the RFC 8628 device flow against Atlas's own
5
+ * sign-in (the operator issuer) with the public `atlas-cli` client: show the
6
+ * person `verification_uri_complete` / `user_code`, then
7
+ * 2. `pollOperatorLogin()` until it returns the operator access token, then
8
+ * 3. `exchangeOperatorToken()` swaps it (RFC 8693) for a ONE-HOUR Atlas token
9
+ * bound to one instance (`ins_…`, Backend API) or app/account (`app_…` /
10
+ * `acct_…`, Platform API), with only the scopes you ask for.
11
+ *
12
+ * Root actions (create an app or instance, mint a key) need a multi-factor
13
+ * sign-in within 5 minutes; otherwise the API answers 403 STEP_UP_REQUIRED.
14
+ */
15
+ export interface OperatorConfiguration {
16
+ issuer: string;
17
+ device_authorization_endpoint: string;
18
+ token_endpoint: string;
19
+ client_id: string;
20
+ scope: string;
21
+ token_exchange_endpoint: string;
22
+ token_exchange_audience: 'atlas';
23
+ root_action_max_mfa_age_seconds: number;
24
+ }
25
+ export interface DeviceAuthorization {
26
+ device_code: string;
27
+ user_code: string;
28
+ verification_uri: string;
29
+ verification_uri_complete: string;
30
+ expires_in: number;
31
+ interval: number;
32
+ }
33
+ export interface OAuthTokenResponse {
34
+ access_token: string;
35
+ token_type: string;
36
+ expires_in: number;
37
+ scope?: string;
38
+ refresh_token?: string;
39
+ id_token?: string;
40
+ issued_token_type?: string;
41
+ }
42
+ export declare class OAuthFlowError extends Error {
43
+ readonly error: string;
44
+ readonly status: number;
45
+ constructor(error: string, message: string, status: number);
46
+ }
47
+ interface Opts {
48
+ apiUrl?: string;
49
+ fetch?: typeof fetch;
50
+ }
51
+ /** GET /v1/operator — where the operator device flow and token exchange live. */
52
+ export declare function operatorConfiguration(opts?: Opts): Promise<OperatorConfiguration>;
53
+ export declare function startOperatorLogin(opts?: Opts & {
54
+ config?: OperatorConfiguration;
55
+ }): Promise<DeviceAuthorization & {
56
+ config: OperatorConfiguration;
57
+ }>;
58
+ /**
59
+ * Poll until the person approves (resolves the operator token), denies or the
60
+ * code expires (throws). Honours `interval` and `slow_down`.
61
+ */
62
+ export declare function pollOperatorLogin(start: DeviceAuthorization & {
63
+ config: OperatorConfiguration;
64
+ }, opts?: Opts & {
65
+ sleep?: (ms: number) => Promise<void>;
66
+ signal?: AbortSignal;
67
+ }): Promise<OAuthTokenResponse>;
68
+ /** RFC 8693: swap an operator token for a one-hour, resource-bound Atlas token. */
69
+ export declare function exchangeOperatorToken(subjectToken: string, params: {
70
+ resource: string;
71
+ scope: string | string[];
72
+ }, opts?: Opts): Promise<OAuthTokenResponse & {
73
+ resource: string;
74
+ }>;
75
+ /** client_credentials with a partner link's credentials (a partner calling an instance). */
76
+ export declare function partnerLinkToken(clientId: string, clientSecret: string, opts?: Opts & {
77
+ scope?: string;
78
+ }): Promise<OAuthTokenResponse>;
79
+ /** A key pair for sealed secret delivery; pass `secretRecipient` to the client. */
80
+ export declare function generateSealKeyPair(): {
81
+ publicKey: Uint8Array;
82
+ secretKey: Uint8Array;
83
+ secretRecipient: string;
84
+ };
85
+ /** Open a `sealed_*` field (base64 libsodium sealed box) from an Atlas response. */
86
+ export declare function openSealedSecret(sealedBase64: string, keyPair: {
87
+ publicKey: Uint8Array;
88
+ secretKey: Uint8Array;
89
+ }): string;
90
+ /** POST /v1/keys/revoke_leaked — revoke leaked Atlas credentials (no key needed). */
91
+ export declare function revokeLeakedKeys(secrets: string[], opts?: Opts & {
92
+ url?: string;
93
+ }): Promise<{
94
+ results: Array<{
95
+ index: number;
96
+ kind: string;
97
+ outcome: 'revoked' | 'already_revoked' | 'not_found';
98
+ }>;
99
+ }>;
100
+ export { sealBox, openSealedBox } from './sealed-box';