@atlasauth/backend 0.24.0 → 0.25.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 (166) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/client/abac.d.ts +132 -0
  3. package/dist/client/abac.js +48 -0
  4. package/dist/client/abac.js.map +1 -0
  5. package/dist/client/access-policies.d.ts +100 -0
  6. package/dist/client/access-policies.js +29 -0
  7. package/dist/client/access-policies.js.map +1 -0
  8. package/dist/client/action-gallery.d.ts +1 -1
  9. package/dist/client/action-gallery.js.map +1 -1
  10. package/dist/client/actions.d.ts +129 -6
  11. package/dist/client/actions.js +4 -0
  12. package/dist/client/actions.js.map +1 -1
  13. package/dist/client/analytics-reports.d.ts +215 -0
  14. package/dist/client/analytics-reports.js +56 -0
  15. package/dist/client/analytics-reports.js.map +1 -0
  16. package/dist/client/app-catalog.d.ts +74 -0
  17. package/dist/client/app-catalog.js +30 -0
  18. package/dist/client/app-catalog.js.map +1 -0
  19. package/dist/client/attack-protection.d.ts +10 -0
  20. package/dist/client/attack-protection.js +8 -0
  21. package/dist/client/attack-protection.js.map +1 -1
  22. package/dist/client/audit-events.d.ts +71 -0
  23. package/dist/client/audit-events.js +28 -0
  24. package/dist/client/audit-events.js.map +1 -1
  25. package/dist/client/credentials.d.ts +8 -0
  26. package/dist/client/credentials.js.map +1 -1
  27. package/dist/client/delegated-ui-proxy.d.ts +25 -0
  28. package/dist/client/delegated-ui-proxy.js +46 -0
  29. package/dist/client/delegated-ui-proxy.js.map +1 -0
  30. package/dist/client/devices.d.ts +44 -0
  31. package/dist/client/devices.js +26 -0
  32. package/dist/client/devices.js.map +1 -0
  33. package/dist/client/email-templates.d.ts +1 -1
  34. package/dist/client/email-templates.js.map +1 -1
  35. package/dist/client/flags.d.ts +101 -0
  36. package/dist/client/flags.js +104 -0
  37. package/dist/client/flags.js.map +1 -0
  38. package/dist/client/groups.d.ts +146 -0
  39. package/dist/client/groups.js +67 -0
  40. package/dist/client/groups.js.map +1 -0
  41. package/dist/client/identity-verification.d.ts +62 -0
  42. package/dist/client/identity-verification.js +39 -0
  43. package/dist/client/identity-verification.js.map +1 -0
  44. package/dist/client/index.d.ts +943 -2
  45. package/dist/client/index.js +73 -0
  46. package/dist/client/index.js.map +1 -1
  47. package/dist/client/journeys.d.ts +108 -0
  48. package/dist/client/journeys.js +35 -0
  49. package/dist/client/journeys.js.map +1 -0
  50. package/dist/client/log-streams.d.ts +1 -1
  51. package/dist/client/marketing.d.ts +67 -0
  52. package/dist/client/marketing.js +26 -0
  53. package/dist/client/marketing.js.map +1 -0
  54. package/dist/client/mcp-gateways.d.ts +54 -0
  55. package/dist/client/mcp-gateways.js +25 -0
  56. package/dist/client/mcp-gateways.js.map +1 -0
  57. package/dist/client/messaging.d.ts +14 -3
  58. package/dist/client/messaging.js.map +1 -1
  59. package/dist/client/mfa-factors.d.ts +120 -0
  60. package/dist/client/mfa-factors.js +73 -0
  61. package/dist/client/mfa-factors.js.map +1 -0
  62. package/dist/client/migrations.d.ts +1 -1
  63. package/dist/client/migrations.js.map +1 -1
  64. package/dist/client/network-acls.d.ts +6 -1
  65. package/dist/client/network-acls.js.map +1 -1
  66. package/dist/client/network-zones.d.ts +56 -0
  67. package/dist/client/network-zones.js +29 -0
  68. package/dist/client/network-zones.js.map +1 -0
  69. package/dist/client/notifications.d.ts +1 -1
  70. package/dist/client/notifications.js.map +1 -1
  71. package/dist/client/oauth-clients.d.ts +183 -3
  72. package/dist/client/oauth-clients.js +64 -0
  73. package/dist/client/oauth-clients.js.map +1 -1
  74. package/dist/client/org-role-grants.d.ts +57 -0
  75. package/dist/client/org-role-grants.js +40 -0
  76. package/dist/client/org-role-grants.js.map +1 -0
  77. package/dist/client/organizations.d.ts +52 -0
  78. package/dist/client/organizations.js +44 -0
  79. package/dist/client/organizations.js.map +1 -1
  80. package/dist/client/page-templates.d.ts +78 -0
  81. package/dist/client/page-templates.js +31 -0
  82. package/dist/client/page-templates.js.map +1 -0
  83. package/dist/client/passkey-api.d.ts +73 -0
  84. package/dist/client/passkey-api.js +34 -0
  85. package/dist/client/passkey-api.js.map +1 -0
  86. package/dist/client/resources.d.ts +149 -0
  87. package/dist/client/resources.js +73 -0
  88. package/dist/client/resources.js.map +1 -0
  89. package/dist/client/risk-based-mfa.d.ts +147 -0
  90. package/dist/client/risk-based-mfa.js +30 -0
  91. package/dist/client/risk-based-mfa.js.map +1 -1
  92. package/dist/client/roles.d.ts +4 -0
  93. package/dist/client/roles.js.map +1 -1
  94. package/dist/client/service-connectors.d.ts +83 -0
  95. package/dist/client/service-connectors.js +33 -0
  96. package/dist/client/service-connectors.js.map +1 -0
  97. package/dist/client/ssf.d.ts +111 -0
  98. package/dist/client/ssf.js +49 -0
  99. package/dist/client/ssf.js.map +1 -0
  100. package/dist/client/sso-onboarding.d.ts +6 -0
  101. package/dist/client/sso-onboarding.js.map +1 -1
  102. package/dist/client/users.d.ts +302 -0
  103. package/dist/client/users.js +125 -0
  104. package/dist/client/users.js.map +1 -1
  105. package/dist/client/vault.d.ts +85 -0
  106. package/dist/client/vault.js +50 -0
  107. package/dist/client/vault.js.map +1 -0
  108. package/dist/client/vc.d.ts +128 -0
  109. package/dist/client/vc.js +43 -0
  110. package/dist/client/vc.js.map +1 -0
  111. package/dist/client/webhooks.d.ts +31 -2
  112. package/dist/client/webhooks.js.map +1 -1
  113. package/dist/client/workflows.d.ts +131 -0
  114. package/dist/client/workflows.js +36 -0
  115. package/dist/client/workflows.js.map +1 -0
  116. package/dist/index.d.ts +3 -0
  117. package/dist/index.js +8 -2
  118. package/dist/index.js.map +1 -1
  119. package/dist/magic-did.d.ts +5 -0
  120. package/dist/magic-did.js +49 -0
  121. package/dist/magic-did.js.map +1 -0
  122. package/dist/migration-bridge.d.ts +9 -0
  123. package/dist/migration-bridge.js +28 -2
  124. package/dist/migration-bridge.js.map +1 -1
  125. package/dist/migration-presets-g3.d.ts +2 -0
  126. package/dist/migration-presets-g3.js +254 -0
  127. package/dist/migration-presets-g3.js.map +1 -0
  128. package/dist/migration-presets-g4/authentik.d.ts +14 -0
  129. package/dist/migration-presets-g4/authentik.js +37 -0
  130. package/dist/migration-presets-g4/authentik.js.map +1 -0
  131. package/dist/migration-presets-g4/fusionauth.d.ts +2 -0
  132. package/dist/migration-presets-g4/fusionauth.js +52 -0
  133. package/dist/migration-presets-g4/fusionauth.js.map +1 -0
  134. package/dist/migration-presets-g4/hanko.d.ts +12 -0
  135. package/dist/migration-presets-g4/hanko.js +46 -0
  136. package/dist/migration-presets-g4/hanko.js.map +1 -0
  137. package/dist/migration-presets-g4/keycloak.d.ts +16 -0
  138. package/dist/migration-presets-g4/keycloak.js +37 -0
  139. package/dist/migration-presets-g4/keycloak.js.map +1 -0
  140. package/dist/migration-presets-g4/logto.d.ts +12 -0
  141. package/dist/migration-presets-g4/logto.js +35 -0
  142. package/dist/migration-presets-g4/logto.js.map +1 -0
  143. package/dist/migration-presets-g4/ory.d.ts +2 -0
  144. package/dist/migration-presets-g4/ory.js +67 -0
  145. package/dist/migration-presets-g4/ory.js.map +1 -0
  146. package/dist/migration-presets-g4/supertokens.d.ts +13 -0
  147. package/dist/migration-presets-g4/supertokens.js +35 -0
  148. package/dist/migration-presets-g4/supertokens.js.map +1 -0
  149. package/dist/migration-presets-g4/zitadel.d.ts +2 -0
  150. package/dist/migration-presets-g4/zitadel.js +36 -0
  151. package/dist/migration-presets-g4/zitadel.js.map +1 -0
  152. package/dist/migration-presets-g4.d.ts +10 -0
  153. package/dist/migration-presets-g4.js +30 -0
  154. package/dist/migration-presets-g4.js.map +1 -0
  155. package/dist/migration-presets.d.ts +6 -0
  156. package/dist/migration-presets.js +102 -6
  157. package/dist/migration-presets.js.map +1 -1
  158. package/dist/request-auth.d.ts +32 -0
  159. package/dist/request-auth.js +72 -0
  160. package/dist/request-auth.js.map +1 -0
  161. package/dist/verify.d.ts +2 -0
  162. package/dist/verify.js.map +1 -1
  163. package/dist/workos-session.d.ts +30 -0
  164. package/dist/workos-session.js +123 -0
  165. package/dist/workos-session.js.map +1 -0
  166. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.25.0 — 2026-10-26
6
+
7
+ ### Added
8
+
9
+ - `mfaFactors` client resource for the additional authentication factors: `setYubicoSecret` / `removeYubicoSecret`, `setDuoSecret` / `removeDuoSecret` / `duoHealthCheck`, `setSmartCardSecret` / `removeSmartCardSecret` (all write-only), `yubikeys` (`list`, `register`, `remove`), `smartCardMappings` (`list`, `add`, `remove`) and `resetSecurityQuestions`.
10
+ - `users.create({ mfa })` is typed (`ImportedMfa`): an authenticator (`totp`: SHA-1/256/512, 6 or 8 digits, 30 or 60 seconds) or a counter-based token (`hotp`), plus recovery codes.
11
+
5
12
  ## 0.24.0 — 2026-10-25
6
13
 
7
14
  ### Added
@@ -0,0 +1,132 @@
1
+ import { type RequestFn } from './request';
2
+ import type { ListPage } from './types';
3
+ export interface AbacPolicyTestCase {
4
+ name: string;
5
+ /** principal, action, resource, context and optional entities. */
6
+ request: Record<string, unknown>;
7
+ expect: 'allow' | 'deny';
8
+ }
9
+ /** An ABAC policy: named, versioned source in the Cedar-subset policy language. */
10
+ export interface AbacPolicy {
11
+ object: 'abac_policy';
12
+ id: string;
13
+ name: string;
14
+ description: string | null;
15
+ enabled: boolean;
16
+ current_version: number;
17
+ /** The FGA store `fga.check(...)` in the source consults. */
18
+ fga_store_id: string | null;
19
+ source: string;
20
+ tests: AbacPolicyTestCase[];
21
+ created_at: number;
22
+ updated_at: number;
23
+ }
24
+ export interface AbacPolicyVersion {
25
+ object: 'abac_policy_version';
26
+ policy_id: string;
27
+ version: number;
28
+ source: string;
29
+ tests: AbacPolicyTestCase[];
30
+ current: boolean;
31
+ created_at: number;
32
+ }
33
+ export interface CreateAbacPolicyBody {
34
+ name: string;
35
+ description?: string | null;
36
+ enabled?: boolean;
37
+ fga_store_id?: string | null;
38
+ source: string;
39
+ tests?: AbacPolicyTestCase[];
40
+ }
41
+ /** Sending `source` appends a new version; `current_version` (without source) rolls back. */
42
+ export type UpdateAbacPolicyBody = Partial<CreateAbacPolicyBody> & {
43
+ current_version?: number;
44
+ };
45
+ export interface AbacEntity {
46
+ type: string;
47
+ id: string;
48
+ attributes?: Record<string, unknown>;
49
+ /** `Type::id` uids this entity is a member of (for `in`). */
50
+ parents?: string[];
51
+ }
52
+ export interface AbacEvaluateBody {
53
+ principal: AbacEntity;
54
+ action: string;
55
+ resource: AbacEntity;
56
+ context?: Record<string, unknown>;
57
+ entities?: AbacEntity[];
58
+ /** Evaluate only these policies (default: every enabled one). */
59
+ policy_ids?: string[];
60
+ }
61
+ export interface AbacDecision {
62
+ object: 'abac_decision';
63
+ decision: 'allow' | 'deny';
64
+ reasons: string[];
65
+ errors: string[];
66
+ }
67
+ export interface AbacTestRun {
68
+ object: 'abac_policy_test_run';
69
+ passed: boolean;
70
+ results: Array<{
71
+ name: string;
72
+ expect: 'allow' | 'deny';
73
+ actual: 'allow' | 'deny';
74
+ passed: boolean;
75
+ }>;
76
+ }
77
+ export interface AuthzenEvaluation {
78
+ subject?: {
79
+ type: string;
80
+ id: string;
81
+ properties?: Record<string, unknown>;
82
+ };
83
+ resource?: {
84
+ type: string;
85
+ id: string;
86
+ properties?: Record<string, unknown>;
87
+ };
88
+ action?: {
89
+ name: string;
90
+ properties?: Record<string, unknown>;
91
+ };
92
+ context?: Record<string, unknown>;
93
+ }
94
+ /** ABAC policies and the policy decision point (including the AuthZEN endpoints). */
95
+ export declare function abacResource(request: RequestFn): {
96
+ list(): Promise<ListPage<AbacPolicy>>;
97
+ get(id: string): Promise<AbacPolicy>;
98
+ create(body: CreateAbacPolicyBody, idempotencyKey?: string): Promise<AbacPolicy>;
99
+ update(id: string, body: UpdateAbacPolicyBody): Promise<AbacPolicy>;
100
+ delete(id: string): Promise<{
101
+ object: "abac_policy";
102
+ id: string;
103
+ deleted: true;
104
+ }>;
105
+ versions(id: string): Promise<ListPage<AbacPolicyVersion>>;
106
+ /** Run a version's tests (default: current), or a draft `source` and `tests`, without saving. */
107
+ test(id: string, body?: {
108
+ version?: number;
109
+ source?: string;
110
+ tests?: AbacPolicyTestCase[];
111
+ }): Promise<AbacTestRun>;
112
+ /** May `principal` perform `action` on `resource`? */
113
+ evaluate(body: AbacEvaluateBody): Promise<AbacDecision>;
114
+ /** Convenience: the boolean answer to {@link evaluate}. */
115
+ isAllowed(body: AbacEvaluateBody): Promise<boolean>;
116
+ /** AuthZEN 1.0 Access Evaluation. */
117
+ authzenEvaluation(body: AuthzenEvaluation): Promise<{
118
+ decision: boolean;
119
+ context?: Record<string, unknown>;
120
+ }>;
121
+ /** AuthZEN 1.0 Access Evaluations (batch). */
122
+ authzenEvaluations(body: AuthzenEvaluation & {
123
+ evaluations?: AuthzenEvaluation[];
124
+ options?: {
125
+ evaluations_semantic?: "execute_all" | "deny_on_first_deny" | "permit_on_first_permit";
126
+ };
127
+ }): Promise<{
128
+ evaluations: Array<{
129
+ decision: boolean;
130
+ }>;
131
+ }>;
132
+ };
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.abacResource = abacResource;
4
+ const request_1 = require("./request");
5
+ /** ABAC policies and the policy decision point (including the AuthZEN endpoints). */
6
+ function abacResource(request) {
7
+ return {
8
+ list() {
9
+ return request({ method: 'GET', path: '/v1/abac_policies' });
10
+ },
11
+ get(id) {
12
+ return request({ method: 'GET', path: `/v1/abac_policies/${(0, request_1.enc)(id)}` });
13
+ },
14
+ create(body, idempotencyKey) {
15
+ return request({ method: 'POST', path: '/v1/abac_policies', body, idempotencyKey });
16
+ },
17
+ update(id, body) {
18
+ return request({ method: 'PATCH', path: `/v1/abac_policies/${(0, request_1.enc)(id)}`, body });
19
+ },
20
+ delete(id) {
21
+ return request({ method: 'DELETE', path: `/v1/abac_policies/${(0, request_1.enc)(id)}` });
22
+ },
23
+ versions(id) {
24
+ return request({ method: 'GET', path: `/v1/abac_policies/${(0, request_1.enc)(id)}/versions` });
25
+ },
26
+ /** Run a version's tests (default: current), or a draft `source` and `tests`, without saving. */
27
+ test(id, body = {}) {
28
+ return request({ method: 'POST', path: `/v1/abac_policies/${(0, request_1.enc)(id)}/test`, body });
29
+ },
30
+ /** May `principal` perform `action` on `resource`? */
31
+ evaluate(body) {
32
+ return request({ method: 'POST', path: '/v1/abac/evaluate', body });
33
+ },
34
+ /** Convenience: the boolean answer to {@link evaluate}. */
35
+ async isAllowed(body) {
36
+ return (await request({ method: 'POST', path: '/v1/abac/evaluate', body })).decision === 'allow';
37
+ },
38
+ /** AuthZEN 1.0 Access Evaluation. */
39
+ authzenEvaluation(body) {
40
+ return request({ method: 'POST', path: '/v1/authzen/access/v1/evaluation', body });
41
+ },
42
+ /** AuthZEN 1.0 Access Evaluations (batch). */
43
+ authzenEvaluations(body) {
44
+ return request({ method: 'POST', path: '/v1/authzen/access/v1/evaluations', body });
45
+ },
46
+ };
47
+ }
48
+ //# sourceMappingURL=abac.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abac.js","sourceRoot":"","sources":["../../src/client/abac.ts"],"names":[],"mappings":";;AAuFA,oCA2CC;AAlID,uCAAgD;AAsFhD,qFAAqF;AACrF,SAAgB,YAAY,CAAC,OAAkB;IAC7C,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,CAAC,IAA0B,EAAE,cAAuB;YACxD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAA0B;YAC3C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,qBAAqB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,QAAQ,CAAC,EAAU;YACjB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,IAAA,aAAG,EAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,iGAAiG;QACjG,IAAI,CAAC,EAAU,EAAE,OAA4E,EAAE;YAC7F,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,IAAA,aAAG,EAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,sDAAsD;QACtD,QAAQ,CAAC,IAAsB;YAC7B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,2DAA2D;QAC3D,KAAK,CAAC,SAAS,CAAC,IAAsB;YACpC,OAAO,CAAC,MAAM,OAAO,CAAe,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC;QACjH,CAAC;QACD,qCAAqC;QACrC,iBAAiB,CAAC,IAAuB;YACvC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,8CAA8C;QAC9C,kBAAkB,CAChB,IAAqK;YAErK,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mCAAmC,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,100 @@
1
+ import { type RequestFn } from './request';
2
+ import type { ListPage } from './types';
3
+ export type AccessPolicyStage = 'sign_in' | 'authorize' | 'token';
4
+ export type AccessPolicyGrantType = 'allow' | 'block' | 'require_mfa' | 'require_acr' | 'require_policy_acceptance' | 'require_action';
5
+ export interface AccessPolicyGrant {
6
+ type: AccessPolicyGrantType;
7
+ /** require_acr: the acr; require_policy_acceptance: the policy key; require_action: the action name. */
8
+ value?: string;
9
+ }
10
+ /** Every present condition must match; an absent one matches anything. */
11
+ export interface AccessPolicyConditions {
12
+ applications?: string[];
13
+ userIds?: string[];
14
+ groups?: string[];
15
+ orgs?: string[];
16
+ roles?: string[];
17
+ networkZones?: {
18
+ include?: string[];
19
+ exclude?: string[];
20
+ };
21
+ countries?: string[];
22
+ riskLevels?: Array<'low' | 'medium' | 'high'>;
23
+ deviceTrust?: Array<'trusted' | 'untrusted' | 'unknown'>;
24
+ authMethods?: string[];
25
+ timeWindow?: {
26
+ days?: number[];
27
+ start: string;
28
+ end: string;
29
+ timezone?: string;
30
+ };
31
+ }
32
+ /** A conditional-access policy, evaluated at sign-in, /authorize and token issuance. */
33
+ export interface AccessPolicy {
34
+ object: 'access_policy';
35
+ id: string;
36
+ name: string;
37
+ description: string | null;
38
+ enabled: boolean;
39
+ priority: number;
40
+ stages: AccessPolicyStage[];
41
+ conditions: AccessPolicyConditions;
42
+ grants: AccessPolicyGrant[];
43
+ created_at: number;
44
+ updated_at: number;
45
+ }
46
+ export interface CreateAccessPolicyBody {
47
+ name: string;
48
+ description?: string | null;
49
+ enabled?: boolean;
50
+ priority?: number;
51
+ stages?: AccessPolicyStage[];
52
+ conditions?: AccessPolicyConditions;
53
+ grants: AccessPolicyGrant[];
54
+ }
55
+ export type UpdateAccessPolicyBody = Partial<CreateAccessPolicyBody>;
56
+ export interface SimulateAccessBody {
57
+ policy_id?: string;
58
+ stage?: AccessPolicyStage;
59
+ ip?: string;
60
+ application_id?: string;
61
+ user_id?: string;
62
+ groups?: string[];
63
+ orgs?: string[];
64
+ roles?: string[];
65
+ country?: string;
66
+ risk_level?: 'low' | 'medium' | 'high';
67
+ device_trust?: 'trusted' | 'untrusted' | 'unknown';
68
+ auth_methods?: string[];
69
+ mfa_verified?: boolean;
70
+ acr?: string[];
71
+ /** Epoch ms; default now. */
72
+ now?: number;
73
+ }
74
+ export interface AccessPolicySimulation {
75
+ object: 'access_policy_simulation';
76
+ decision: 'allow' | 'block' | 'step_up';
77
+ matched: string[];
78
+ blocked_by: string | null;
79
+ requirements: {
80
+ mfa: boolean;
81
+ acr: string[];
82
+ policy_acceptance: string[];
83
+ actions: string[];
84
+ };
85
+ unmet: string[];
86
+ }
87
+ /** CRUD over conditional-access policies, plus a what-if `simulate`. */
88
+ export declare function accessPoliciesResource(request: RequestFn): {
89
+ list(): Promise<ListPage<AccessPolicy>>;
90
+ get(id: string): Promise<AccessPolicy>;
91
+ create(body: CreateAccessPolicyBody, idempotencyKey?: string): Promise<AccessPolicy>;
92
+ update(id: string, body: UpdateAccessPolicyBody): Promise<AccessPolicy>;
93
+ delete(id: string): Promise<{
94
+ object: "access_policy";
95
+ id: string;
96
+ deleted: true;
97
+ }>;
98
+ /** What would the policies decide for this request? */
99
+ simulate(body: SimulateAccessBody): Promise<AccessPolicySimulation>;
100
+ };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.accessPoliciesResource = accessPoliciesResource;
4
+ const request_1 = require("./request");
5
+ /** CRUD over conditional-access policies, plus a what-if `simulate`. */
6
+ function accessPoliciesResource(request) {
7
+ return {
8
+ list() {
9
+ return request({ method: 'GET', path: '/v1/access_policies' });
10
+ },
11
+ get(id) {
12
+ return request({ method: 'GET', path: `/v1/access_policies/${(0, request_1.enc)(id)}` });
13
+ },
14
+ create(body, idempotencyKey) {
15
+ return request({ method: 'POST', path: '/v1/access_policies', body, idempotencyKey });
16
+ },
17
+ update(id, body) {
18
+ return request({ method: 'PATCH', path: `/v1/access_policies/${(0, request_1.enc)(id)}`, body });
19
+ },
20
+ delete(id) {
21
+ return request({ method: 'DELETE', path: `/v1/access_policies/${(0, request_1.enc)(id)}` });
22
+ },
23
+ /** What would the policies decide for this request? */
24
+ simulate(body) {
25
+ return request({ method: 'POST', path: '/v1/access_policies/simulate', body });
26
+ },
27
+ };
28
+ }
29
+ //# sourceMappingURL=access-policies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-policies.js","sourceRoot":"","sources":["../../src/client/access-policies.ts"],"names":[],"mappings":";;AAmFA,wDAsBC;AAzGD,uCAAgD;AAkFhD,wEAAwE;AACxE,SAAgB,sBAAsB,CAAC,OAAkB;IACvD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,CAAC,IAA4B,EAAE,cAAuB;YAC1D,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACxF,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAA4B;YAC7C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,uDAAuD;QACvD,QAAQ,CAAC,IAAwB;YAC/B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -7,7 +7,7 @@ import type { ListPage } from './types';
7
7
  * actions up to date, and publish your own templates for review.
8
8
  */
9
9
  /** Every trigger a template can target (a superset of the classic three). */
10
- export type GalleryTrigger = ActionTrigger | 'pre_organization_create' | 'pre_member_add' | 'pre_invitation_create';
10
+ export type GalleryTrigger = ActionTrigger;
11
11
  /** A secret a template reads, declared by NAME; values are never part of a template. */
12
12
  export interface ActionTemplateSecret {
13
13
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"action-gallery.js","sourceRoot":"","sources":["../../src/client/action-gallery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action-gallery.js","sourceRoot":"","sources":["../../src/client/action-gallery.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { type RequestFn } from './request';
2
2
  import type { ListPage } from './types';
3
3
  /** The fixed point in the auth pipeline an action runs at. */
4
- export type ActionTrigger = 'post_login' | 'pre_user_registration' | 'post_user_registration';
4
+ export type ActionTrigger = 'post_login' | 'pre_user_registration' | 'post_user_registration' | 'pre_organization_create' | 'pre_member_add' | 'pre_invitation_create' | 'pre_authentication' | 'pre_token' | 'post_token_exchange' | 'pre_user_update' | 'mfa_verification_attempt' | 'password_verification_attempt' | 'account_link_decision' | 'billing_plan_selected' | 'post_change_password' | 'post_password_reset' | 'post_user_update' | 'post_email_verified' | 'post_mfa_enroll' | 'post_mfa_remove' | 'post_logout' | 'org_membership_changed' | 'custom_challenge_create' | 'custom_challenge_verify' | 'workflow_step';
5
5
  /**
6
6
  * Tenant code run in the hardened isolate at a trigger. Secret VALUES are
7
7
  * write-only and never returned — a read reports only `secret_names`. Timestamps
@@ -12,27 +12,96 @@ export interface Action {
12
12
  id: string;
13
13
  name: string;
14
14
  trigger: ActionTrigger;
15
+ /** The JavaScript of a `node` Action; empty for an `http` one. */
15
16
  code: string;
16
- runtime: string;
17
+ /** `node` runs `code` in the sandbox; `http` calls `http_target.url`. */
18
+ runtime: 'node' | 'http' | (string & {});
19
+ /** An `http` Action's endpoint; null for a `node` one. */
20
+ http_target: ActionHttpTarget | null;
17
21
  enabled: boolean;
18
22
  secret_names: string[];
19
23
  created_at: number;
20
24
  updated_at: number;
21
25
  }
26
+ /** Where an `http` Action sends the event. Timestamps are epoch milliseconds. */
27
+ export interface ActionHttpTarget {
28
+ url: string;
29
+ /** 500 to 5000; default 3000. */
30
+ timeout_ms: number;
31
+ /** What a failed call does: `closed` (default) refuses a gate, `open` carries on. */
32
+ failure_mode: 'open' | 'closed';
33
+ }
22
34
  export interface CreateActionBody {
23
35
  name: string;
24
36
  trigger: ActionTrigger;
25
- code: string;
37
+ /** Required for a `node` Action; an `http` Action has none. */
38
+ code?: string;
39
+ /** `node` (default) or `http`: call your own HTTPS endpoint instead of running code. */
40
+ runtime?: 'node' | 'http';
41
+ /** Required when `runtime` is `http`. */
42
+ http_target?: {
43
+ url: string;
44
+ timeout_ms?: number;
45
+ failure_mode?: 'open' | 'closed';
46
+ };
47
+ /** `http` only: your own 16 to 512 character secret. Omit it and Atlas generates one, returned once. */
48
+ signing_secret?: string;
26
49
  enabled?: boolean;
27
50
  /** Write-only, encrypted at rest, never read back. */
28
51
  secrets?: Record<string, string>;
29
52
  }
53
+ /** The create/update response of an `http` Action carries a generated signing secret once. */
54
+ export type ActionWithSecret = Action & {
55
+ signing_secret?: string;
56
+ };
30
57
  export interface UpdateActionBody {
31
58
  name?: string;
32
59
  code?: string;
60
+ /** `http` only; omitted settings keep their value. */
61
+ http_target?: {
62
+ url?: string;
63
+ timeout_ms?: number;
64
+ failure_mode?: 'open' | 'closed';
65
+ };
66
+ /** `http` only: replace the signing secret with your own. */
67
+ signing_secret?: string;
68
+ /** `http` only: generate a new signing secret, returned once on the response. */
69
+ rotate_signing_secret?: boolean;
33
70
  enabled?: boolean;
34
71
  secrets?: Record<string, string>;
35
72
  }
73
+ /** One call to an `http` Action's endpoint. */
74
+ export interface ActionHttpCall {
75
+ object: 'action_http_call';
76
+ id: string;
77
+ action_id: string;
78
+ trigger: ActionTrigger;
79
+ user_id: string | null;
80
+ /** A dry-run test call; kept out of the stats. */
81
+ test: boolean;
82
+ status: 'ok' | 'denied' | 'timeout' | 'error' | 'invalid_response';
83
+ http_status: number | null;
84
+ latency_ms: number | null;
85
+ error: string | null;
86
+ /** What the endpoint answered with, reduced to the names it set. */
87
+ answer: Record<string, unknown> | null;
88
+ created_at: number;
89
+ }
90
+ export interface ActionHttpCallList {
91
+ object: 'list';
92
+ data: ActionHttpCall[];
93
+ has_more: boolean;
94
+ next_cursor: string | null;
95
+ /** Real (non-test) calls in the last 24 hours. */
96
+ stats: {
97
+ calls_24h: number;
98
+ denied_24h: number;
99
+ failed_24h: number;
100
+ timeouts_24h: number;
101
+ p95_latency_ms: number | null;
102
+ last_failed_at: number | null;
103
+ };
104
+ }
36
105
  /** The sample event a dry-run runs against; every field has a stand-in default. */
37
106
  export interface ActionTestEvent {
38
107
  user?: {
@@ -50,6 +119,7 @@ export interface ActionTestEvent {
50
119
  };
51
120
  connection?: {
52
121
  strategy?: string;
122
+ method?: string;
53
123
  };
54
124
  /** `country` is the ISO code `event.request.country` should carry. */
55
125
  request?: {
@@ -57,6 +127,16 @@ export interface ActionTestEvent {
57
127
  user_agent?: string;
58
128
  country?: string;
59
129
  };
130
+ /** The per-trigger `event.context` (token type, changed fields, MFA result, …). */
131
+ context?: Record<string, unknown>;
132
+ /** Registration triggers: the typed sign-up field values (`event.signUpFields`). */
133
+ sign_up_fields?: Record<string, string>;
134
+ /** Organization triggers: `event.organization`. */
135
+ organization?: {
136
+ id?: string | null;
137
+ name?: string;
138
+ slug?: string;
139
+ };
60
140
  }
61
141
  /** An outbound request the code queued with `api.http` (a dry run sends nothing). */
62
142
  export interface ActionTestHttpRequest {
@@ -68,6 +148,17 @@ export interface ActionTestHttpRequest {
68
148
  has_body: boolean;
69
149
  save_response_as: string | null;
70
150
  }
151
+ /** Edits to the user an Action asked for. */
152
+ export interface ActionUserEdits {
153
+ banned?: {
154
+ value: boolean;
155
+ reason: string | null;
156
+ };
157
+ emailVerified?: boolean;
158
+ firstName?: string | null;
159
+ lastName?: string | null;
160
+ imageUrl?: string | null;
161
+ }
71
162
  /** What an action produced against a sample event — no real data is touched. */
72
163
  export interface ActionTestResult {
73
164
  object: 'action_test_result';
@@ -77,8 +168,33 @@ export interface ActionTestResult {
77
168
  access_token_claims: Record<string, unknown>;
78
169
  id_token_claims: Record<string, unknown>;
79
170
  app_metadata: Record<string, unknown>;
171
+ /** Set when the code called `api.access.lock()`; a real run locks the account for 15 minutes. */
172
+ lock_reason?: string | null;
173
+ challenge?: {
174
+ prompt: string;
175
+ hint: string | null;
176
+ state: unknown;
177
+ } | null;
178
+ challenge_accepted?: {
179
+ amr: string[];
180
+ } | null;
181
+ /** `pre_token`: the claims the code asked to remove. */
182
+ suppressed_access_claims?: string[];
183
+ suppressed_id_claims?: string[];
184
+ /** An `http` Action only: how the endpoint call went (the test really calls it, flagged `test`). */
185
+ http_call?: {
186
+ status: string;
187
+ http_status: number | null;
188
+ latency_ms: number | null;
189
+ error: string | null;
190
+ };
191
+ /** `api.user.setBanned/setEmailVerified/setName/setImage`, as a real run would apply them. */
192
+ user_edits?: ActionUserEdits;
193
+ /** Registration triggers: `api.signUp.prefill` and `modify`. */
194
+ sign_up_prefill?: Record<string, string>;
195
+ sign_up_modify?: Record<string, string>;
80
196
  logs: string[];
81
- /** What the code queued with `api.http`; sent only on a real post_login / post_user_registration run. */
197
+ /** What the code queued with `api.http`; sent only on a real run of a post_login or side-effect trigger. */
82
198
  http_requests?: ActionTestHttpRequest[];
83
199
  error: string | null;
84
200
  }
@@ -90,9 +206,9 @@ export interface ActionBindingList {
90
206
  }
91
207
  export declare function actionsResource(request: RequestFn): {
92
208
  list(): Promise<ListPage<Action>>;
93
- create(body: CreateActionBody, idempotencyKey?: string): Promise<Action>;
209
+ create(body: CreateActionBody, idempotencyKey?: string): Promise<ActionWithSecret>;
94
210
  get(id: string): Promise<Action>;
95
- update(id: string, body: UpdateActionBody): Promise<Action>;
211
+ update(id: string, body: UpdateActionBody): Promise<ActionWithSecret>;
96
212
  delete(id: string): Promise<{
97
213
  object: "action";
98
214
  id: string;
@@ -100,6 +216,13 @@ export declare function actionsResource(request: RequestFn): {
100
216
  }>;
101
217
  /** Dry-run against a sample event in the sandbox; nothing is persisted. */
102
218
  test(id: string, event?: ActionTestEvent): Promise<ActionTestResult>;
219
+ /** The call log of an `http` Action, newest first, with 24 hour stats. */
220
+ calls(id: string, query?: {
221
+ limit?: number;
222
+ status?: "ok" | "denied" | "failed" | "timeout" | "error" | "invalid_response";
223
+ test?: boolean;
224
+ starting_after?: string;
225
+ }): Promise<ActionHttpCallList>;
103
226
  /** The actions bound to a trigger, in run order. */
104
227
  getBindings(trigger: ActionTrigger): Promise<ActionBindingList>;
105
228
  /** Replace a trigger's ordered binding set. */
@@ -23,6 +23,10 @@ function actionsResource(request) {
23
23
  test(id, event = {}) {
24
24
  return request({ method: 'POST', path: `/v1/actions/${(0, request_1.enc)(id)}/test`, body: { event } });
25
25
  },
26
+ /** The call log of an `http` Action, newest first, with 24 hour stats. */
27
+ calls(id, query = {}) {
28
+ return request({ method: 'GET', path: `/v1/actions/${(0, request_1.enc)(id)}/calls`, query });
29
+ },
26
30
  /** The actions bound to a trigger, in run order. */
27
31
  getBindings(trigger) {
28
32
  return request({ method: 'GET', path: `/v1/actions/bindings/${(0, request_1.enc)(trigger)}` });
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/client/actions.ts"],"names":[],"mappings":";;AAwFA,0CAkCC;AA1HD,uCAAgD;AAwFhD,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,CAAC,IAAsB,EAAE,cAAuB;YACpD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAAsB;YACvC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,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;QACD,2EAA2E;QAC3E,IAAI,CAAC,EAAU,EAAE,QAAyB,EAAE;YAC1C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,IAAA,aAAG,EAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,oDAAoD;QACpD,WAAW,CAAC,OAAsB;YAChC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,IAAA,aAAG,EAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,+CAA+C;QAC/C,WAAW,CAAC,OAAsB,EAAE,SAAmB;YACrD,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,wBAAwB,IAAA,aAAG,EAAC,OAAO,CAAC,EAAE;gBAC5C,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;aAChC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../src/client/actions.ts"],"names":[],"mappings":";;AA8MA,0CAyCC;AAvPD,uCAAgD;AA8MhD,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,CAAC,IAAsB,EAAE,cAAuB;YACpD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAAsB;YACvC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,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;QACD,2EAA2E;QAC3E,IAAI,CAAC,EAAU,EAAE,QAAyB,EAAE;YAC1C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,IAAA,aAAG,EAAC,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,0EAA0E;QAC1E,KAAK,CACH,EAAU,EACV,QAAqJ,EAAE;YAEvJ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,eAAe,IAAA,aAAG,EAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,oDAAoD;QACpD,WAAW,CAAC,OAAsB;YAChC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,IAAA,aAAG,EAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,+CAA+C;QAC/C,WAAW,CAAC,OAAsB,EAAE,SAAmB;YACrD,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,wBAAwB,IAAA,aAAG,EAAC,OAAO,CAAC,EAAE;gBAC5C,IAAI,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE;aAChC,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}