@atlasauth/backend 0.24.0 → 0.26.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 (201) hide show
  1. package/CHANGELOG.md +39 -1
  2. package/dist/client/abac.d.ts +521 -0
  3. package/dist/client/abac.js +146 -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/authz-decisions.d.ts +108 -0
  26. package/dist/client/authz-decisions.js +40 -0
  27. package/dist/client/authz-decisions.js.map +1 -0
  28. package/dist/client/connections.d.ts +507 -0
  29. package/dist/client/connections.js +164 -0
  30. package/dist/client/connections.js.map +1 -0
  31. package/dist/client/credentials.d.ts +8 -0
  32. package/dist/client/credentials.js.map +1 -1
  33. package/dist/client/custom-oauth-providers.d.ts +15 -0
  34. package/dist/client/custom-oauth-providers.js.map +1 -1
  35. package/dist/client/delegated-ui-proxy.d.ts +25 -0
  36. package/dist/client/delegated-ui-proxy.js +46 -0
  37. package/dist/client/delegated-ui-proxy.js.map +1 -0
  38. package/dist/client/desktop-mfa.d.ts +104 -0
  39. package/dist/client/desktop-mfa.js +44 -0
  40. package/dist/client/desktop-mfa.js.map +1 -0
  41. package/dist/client/devices.d.ts +44 -0
  42. package/dist/client/devices.js +26 -0
  43. package/dist/client/devices.js.map +1 -0
  44. package/dist/client/email-templates.d.ts +1 -1
  45. package/dist/client/email-templates.js.map +1 -1
  46. package/dist/client/fga.d.ts +125 -4
  47. package/dist/client/fga.js +40 -0
  48. package/dist/client/fga.js.map +1 -1
  49. package/dist/client/flags.d.ts +101 -0
  50. package/dist/client/flags.js +104 -0
  51. package/dist/client/flags.js.map +1 -0
  52. package/dist/client/groups.d.ts +146 -0
  53. package/dist/client/groups.js +67 -0
  54. package/dist/client/groups.js.map +1 -0
  55. package/dist/client/identity-verification.d.ts +62 -0
  56. package/dist/client/identity-verification.js +39 -0
  57. package/dist/client/identity-verification.js.map +1 -0
  58. package/dist/client/iga.d.ts +436 -0
  59. package/dist/client/iga.js +82 -0
  60. package/dist/client/iga.js.map +1 -0
  61. package/dist/client/index.d.ts +1433 -4
  62. package/dist/client/index.js +96 -0
  63. package/dist/client/index.js.map +1 -1
  64. package/dist/client/journeys.d.ts +108 -0
  65. package/dist/client/journeys.js +35 -0
  66. package/dist/client/journeys.js.map +1 -0
  67. package/dist/client/least-privilege.d.ts +95 -0
  68. package/dist/client/least-privilege.js +28 -0
  69. package/dist/client/least-privilege.js.map +1 -0
  70. package/dist/client/log-streams.d.ts +1 -1
  71. package/dist/client/managed-grants.d.ts +52 -0
  72. package/dist/client/managed-grants.js +28 -0
  73. package/dist/client/managed-grants.js.map +1 -0
  74. package/dist/client/marketing.d.ts +67 -0
  75. package/dist/client/marketing.js +26 -0
  76. package/dist/client/marketing.js.map +1 -0
  77. package/dist/client/mcp-gateways.d.ts +126 -0
  78. package/dist/client/mcp-gateways.js +47 -0
  79. package/dist/client/mcp-gateways.js.map +1 -0
  80. package/dist/client/messaging.d.ts +14 -3
  81. package/dist/client/messaging.js.map +1 -1
  82. package/dist/client/mfa-factors.d.ts +120 -0
  83. package/dist/client/mfa-factors.js +73 -0
  84. package/dist/client/mfa-factors.js.map +1 -0
  85. package/dist/client/migrations.d.ts +1 -1
  86. package/dist/client/migrations.js.map +1 -1
  87. package/dist/client/network-acls.d.ts +6 -1
  88. package/dist/client/network-acls.js.map +1 -1
  89. package/dist/client/network-zones.d.ts +56 -0
  90. package/dist/client/network-zones.js +29 -0
  91. package/dist/client/network-zones.js.map +1 -0
  92. package/dist/client/notifications.d.ts +1 -1
  93. package/dist/client/notifications.js.map +1 -1
  94. package/dist/client/oauth-clients.d.ts +187 -3
  95. package/dist/client/oauth-clients.js +64 -0
  96. package/dist/client/oauth-clients.js.map +1 -1
  97. package/dist/client/openfga.d.ts +90 -3
  98. package/dist/client/openfga.js +27 -1
  99. package/dist/client/openfga.js.map +1 -1
  100. package/dist/client/org-role-grants.d.ts +57 -0
  101. package/dist/client/org-role-grants.js +40 -0
  102. package/dist/client/org-role-grants.js.map +1 -0
  103. package/dist/client/organizations.d.ts +52 -0
  104. package/dist/client/organizations.js +44 -0
  105. package/dist/client/organizations.js.map +1 -1
  106. package/dist/client/page-templates.d.ts +78 -0
  107. package/dist/client/page-templates.js +31 -0
  108. package/dist/client/page-templates.js.map +1 -0
  109. package/dist/client/passkey-api.d.ts +73 -0
  110. package/dist/client/passkey-api.js +34 -0
  111. package/dist/client/passkey-api.js.map +1 -0
  112. package/dist/client/policy-bundles.d.ts +105 -0
  113. package/dist/client/policy-bundles.js +38 -0
  114. package/dist/client/policy-bundles.js.map +1 -0
  115. package/dist/client/resources.d.ts +150 -0
  116. package/dist/client/resources.js +73 -0
  117. package/dist/client/resources.js.map +1 -0
  118. package/dist/client/risk-based-mfa.d.ts +147 -0
  119. package/dist/client/risk-based-mfa.js +30 -0
  120. package/dist/client/risk-based-mfa.js.map +1 -1
  121. package/dist/client/roles.d.ts +4 -0
  122. package/dist/client/roles.js.map +1 -1
  123. package/dist/client/service-connectors.d.ts +83 -0
  124. package/dist/client/service-connectors.js +33 -0
  125. package/dist/client/service-connectors.js.map +1 -0
  126. package/dist/client/ssf.d.ts +112 -0
  127. package/dist/client/ssf.js +49 -0
  128. package/dist/client/ssf.js.map +1 -0
  129. package/dist/client/sso-onboarding.d.ts +6 -0
  130. package/dist/client/sso-onboarding.js.map +1 -1
  131. package/dist/client/users.d.ts +302 -0
  132. package/dist/client/users.js +125 -0
  133. package/dist/client/users.js.map +1 -1
  134. package/dist/client/vault.d.ts +85 -0
  135. package/dist/client/vault.js +50 -0
  136. package/dist/client/vault.js.map +1 -0
  137. package/dist/client/vc.d.ts +136 -0
  138. package/dist/client/vc.js +43 -0
  139. package/dist/client/vc.js.map +1 -0
  140. package/dist/client/webhooks.d.ts +31 -2
  141. package/dist/client/webhooks.js.map +1 -1
  142. package/dist/client/workflows.d.ts +131 -0
  143. package/dist/client/workflows.js +36 -0
  144. package/dist/client/workflows.js.map +1 -0
  145. package/dist/index.d.ts +5 -0
  146. package/dist/index.js +11 -2
  147. package/dist/index.js.map +1 -1
  148. package/dist/magic-did.d.ts +5 -0
  149. package/dist/magic-did.js +49 -0
  150. package/dist/magic-did.js.map +1 -0
  151. package/dist/migration-bridge.d.ts +9 -0
  152. package/dist/migration-bridge.js +28 -2
  153. package/dist/migration-bridge.js.map +1 -1
  154. package/dist/migration-presets-g3.d.ts +2 -0
  155. package/dist/migration-presets-g3.js +254 -0
  156. package/dist/migration-presets-g3.js.map +1 -0
  157. package/dist/migration-presets-g4/authentik.d.ts +14 -0
  158. package/dist/migration-presets-g4/authentik.js +37 -0
  159. package/dist/migration-presets-g4/authentik.js.map +1 -0
  160. package/dist/migration-presets-g4/fusionauth.d.ts +2 -0
  161. package/dist/migration-presets-g4/fusionauth.js +52 -0
  162. package/dist/migration-presets-g4/fusionauth.js.map +1 -0
  163. package/dist/migration-presets-g4/hanko.d.ts +12 -0
  164. package/dist/migration-presets-g4/hanko.js +46 -0
  165. package/dist/migration-presets-g4/hanko.js.map +1 -0
  166. package/dist/migration-presets-g4/keycloak.d.ts +16 -0
  167. package/dist/migration-presets-g4/keycloak.js +37 -0
  168. package/dist/migration-presets-g4/keycloak.js.map +1 -0
  169. package/dist/migration-presets-g4/logto.d.ts +12 -0
  170. package/dist/migration-presets-g4/logto.js +35 -0
  171. package/dist/migration-presets-g4/logto.js.map +1 -0
  172. package/dist/migration-presets-g4/ory.d.ts +2 -0
  173. package/dist/migration-presets-g4/ory.js +67 -0
  174. package/dist/migration-presets-g4/ory.js.map +1 -0
  175. package/dist/migration-presets-g4/supertokens.d.ts +13 -0
  176. package/dist/migration-presets-g4/supertokens.js +35 -0
  177. package/dist/migration-presets-g4/supertokens.js.map +1 -0
  178. package/dist/migration-presets-g4/zitadel.d.ts +2 -0
  179. package/dist/migration-presets-g4/zitadel.js +36 -0
  180. package/dist/migration-presets-g4/zitadel.js.map +1 -0
  181. package/dist/migration-presets-g4.d.ts +10 -0
  182. package/dist/migration-presets-g4.js +30 -0
  183. package/dist/migration-presets-g4.js.map +1 -0
  184. package/dist/migration-presets.d.ts +6 -0
  185. package/dist/migration-presets.js +102 -6
  186. package/dist/migration-presets.js.map +1 -1
  187. package/dist/policy-bundle.d.ts +110 -0
  188. package/dist/policy-bundle.js +289 -0
  189. package/dist/policy-bundle.js.map +1 -0
  190. package/dist/request-auth.d.ts +32 -0
  191. package/dist/request-auth.js +72 -0
  192. package/dist/request-auth.js.map +1 -0
  193. package/dist/uma.d.ts +77 -0
  194. package/dist/uma.js +95 -0
  195. package/dist/uma.js.map +1 -0
  196. package/dist/verify.d.ts +2 -0
  197. package/dist/verify.js.map +1 -1
  198. package/dist/workos-session.d.ts +30 -0
  199. package/dist/workos-session.js +123 -0
  200. package/dist/workos-session.js.map +1 -0
  201. package/package.json +2 -2
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.groupsResource = groupsResource;
4
+ const request_1 = require("./request");
5
+ function groupsResource(request) {
6
+ return {
7
+ list() {
8
+ return request({ method: 'GET', path: '/v1/groups' });
9
+ },
10
+ get(idOrSlug) {
11
+ return request({ method: 'GET', path: `/v1/groups/${(0, request_1.enc)(idOrSlug)}` });
12
+ },
13
+ create(body, idempotencyKey) {
14
+ return request({ method: 'POST', path: '/v1/groups', body, idempotencyKey });
15
+ },
16
+ update(idOrSlug, body) {
17
+ return request({ method: 'PATCH', path: `/v1/groups/${(0, request_1.enc)(idOrSlug)}`, body });
18
+ },
19
+ delete(idOrSlug) {
20
+ return request({ method: 'DELETE', path: `/v1/groups/${(0, request_1.enc)(idOrSlug)}` });
21
+ },
22
+ listMembers(idOrSlug, query = {}) {
23
+ return request({ method: 'GET', path: `/v1/groups/${(0, request_1.enc)(idOrSlug)}/members`, query });
24
+ },
25
+ /** Add up to 500 users by hand. */
26
+ addMembers(idOrSlug, userIds) {
27
+ return request({ method: 'POST', path: `/v1/groups/${(0, request_1.enc)(idOrSlug)}/members`, body: { user_ids: userIds } });
28
+ },
29
+ removeMembers(idOrSlug, userIds) {
30
+ return request({ method: 'POST', path: `/v1/groups/${(0, request_1.enc)(idOrSlug)}/members/remove`, body: { user_ids: userIds } });
31
+ },
32
+ /** Re-evaluate a dynamic group's filter now. */
33
+ reapply(idOrSlug) {
34
+ return request({ method: 'POST', path: `/v1/groups/${(0, request_1.enc)(idOrSlug)}/reapply` });
35
+ },
36
+ /** A user's direct groups. */
37
+ forUser(userId) {
38
+ return request({ method: 'GET', path: `/v1/users/${(0, request_1.enc)(userId)}/groups` });
39
+ },
40
+ rules: {
41
+ list() {
42
+ return request({ method: 'GET', path: '/v1/group_rules' });
43
+ },
44
+ get(id) {
45
+ return request({ method: 'GET', path: `/v1/group_rules/${(0, request_1.enc)(id)}` });
46
+ },
47
+ create(body, idempotencyKey) {
48
+ return request({ method: 'POST', path: '/v1/group_rules', body, idempotencyKey });
49
+ },
50
+ update(id, body) {
51
+ return request({ method: 'PATCH', path: `/v1/group_rules/${(0, request_1.enc)(id)}`, body });
52
+ },
53
+ delete(id) {
54
+ return request({ method: 'DELETE', path: `/v1/group_rules/${(0, request_1.enc)(id)}` });
55
+ },
56
+ /** Run one rule now. */
57
+ apply(id) {
58
+ return request({ method: 'POST', path: `/v1/group_rules/${(0, request_1.enc)(id)}/apply` });
59
+ },
60
+ /** Run every enabled rule in priority order. */
61
+ applyAll() {
62
+ return request({ method: 'POST', path: '/v1/group_rules/apply' });
63
+ },
64
+ },
65
+ };
66
+ }
67
+ //# sourceMappingURL=groups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groups.js","sourceRoot":"","sources":["../../src/client/groups.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ import { type RequestFn } from './request';
2
+ export type IdentityVerificationOutcome = 'pending' | 'approved' | 'declined' | 'needs_review';
3
+ export interface IdentityVerification {
4
+ object: 'identity_verification';
5
+ id: string;
6
+ user_id: string;
7
+ provider: 'persona' | 'onfido' | 'veriff' | 'stripe_identity';
8
+ status: IdentityVerificationOutcome;
9
+ reason: string | null;
10
+ /** The verification service's hosted page, while pending. */
11
+ url: string | null;
12
+ decided_by: string | null;
13
+ created_at: number;
14
+ completed_at: number | null;
15
+ }
16
+ export interface IdentityVerificationSettings {
17
+ object: 'identity_verification_settings';
18
+ enabled: boolean;
19
+ /** The service connector (Persona, Onfido, Veriff or Stripe Identity) that does the checking. */
20
+ connector_id: string | null;
21
+ /** Offer a verified identity as the custom second step of sign-in. */
22
+ as_challenge: boolean;
23
+ /** Give this URL to the verification service for verdict webhooks; store its webhook secret on the connector as `webhook_secret`. */
24
+ webhook_url: string | null;
25
+ }
26
+ /**
27
+ * Identity verification (document and selfie) through your own verification
28
+ * service. An approved check is written to the user as
29
+ * `public_metadata.verification.identity` (`{ status, provider, verified_at }`).
30
+ */
31
+ export declare function identityVerificationResource(request: RequestFn): {
32
+ settings(): Promise<IdentityVerificationSettings>;
33
+ updateSettings(body: {
34
+ enabled: boolean;
35
+ connector_id?: string | null;
36
+ as_challenge?: boolean;
37
+ }): Promise<IdentityVerificationSettings>;
38
+ /** Checks by status, newest first. Defaults to `needs_review`, the review queue. */
39
+ list(params?: {
40
+ status?: IdentityVerificationOutcome;
41
+ }): Promise<{
42
+ object: "list";
43
+ data: IdentityVerification[];
44
+ has_more: boolean;
45
+ }>;
46
+ /** One check; a pending one is refreshed from the verification service. */
47
+ get(id: string): Promise<IdentityVerification>;
48
+ /** Approve or decline a check that is waiting for review. */
49
+ decide(id: string, body: {
50
+ decision: "approved" | "declined";
51
+ reason?: string;
52
+ }): Promise<IdentityVerification>;
53
+ forUser(userId: string): Promise<{
54
+ object: "list";
55
+ data: IdentityVerification[];
56
+ has_more: boolean;
57
+ }>;
58
+ /** Start a check for a user; send them to the returned `url`. */
59
+ start(userId: string, body?: {
60
+ redirect_url?: string;
61
+ }): Promise<IdentityVerification>;
62
+ };
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.identityVerificationResource = identityVerificationResource;
4
+ const request_1 = require("./request");
5
+ /**
6
+ * Identity verification (document and selfie) through your own verification
7
+ * service. An approved check is written to the user as
8
+ * `public_metadata.verification.identity` (`{ status, provider, verified_at }`).
9
+ */
10
+ function identityVerificationResource(request) {
11
+ return {
12
+ settings() {
13
+ return request({ method: 'GET', path: '/v1/identity_verification/settings' });
14
+ },
15
+ updateSettings(body) {
16
+ return request({ method: 'PUT', path: '/v1/identity_verification/settings', body });
17
+ },
18
+ /** Checks by status, newest first. Defaults to `needs_review`, the review queue. */
19
+ list(params = {}) {
20
+ return request({ method: 'GET', path: '/v1/identity_verifications', query: params });
21
+ },
22
+ /** One check; a pending one is refreshed from the verification service. */
23
+ get(id) {
24
+ return request({ method: 'GET', path: `/v1/identity_verifications/${(0, request_1.enc)(id)}` });
25
+ },
26
+ /** Approve or decline a check that is waiting for review. */
27
+ decide(id, body) {
28
+ return request({ method: 'POST', path: `/v1/identity_verifications/${(0, request_1.enc)(id)}/decide`, body });
29
+ },
30
+ forUser(userId) {
31
+ return request({ method: 'GET', path: `/v1/users/${(0, request_1.enc)(userId)}/identity_verifications` });
32
+ },
33
+ /** Start a check for a user; send them to the returned `url`. */
34
+ start(userId, body = {}) {
35
+ return request({ method: 'POST', path: `/v1/users/${(0, request_1.enc)(userId)}/identity_verifications`, body });
36
+ },
37
+ };
38
+ }
39
+ //# sourceMappingURL=identity-verification.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity-verification.js","sourceRoot":"","sources":["../../src/client/identity-verification.ts"],"names":[],"mappings":";;AAkCA,oEA4BC;AA9DD,uCAAgD;AA6BhD;;;;GAIG;AACH,SAAgB,4BAA4B,CAAC,OAAkB;IAC7D,OAAO;QACL,QAAQ;YACN,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,oCAAoC,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,cAAc,CAAC,IAAgF;YAC7F,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,oCAAoC,EAAE,IAAI,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,oFAAoF;QACpF,IAAI,CAAC,SAAmD,EAAE;YACxD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,2EAA2E;QAC3E,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,8BAA8B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACnF,CAAC;QACD,6DAA6D;QAC7D,MAAM,CAAC,EAAU,EAAE,IAA4D;YAC7E,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACjG,CAAC;QACD,OAAO,CAAC,MAAc;YACpB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,IAAA,aAAG,EAAC,MAAM,CAAC,yBAAyB,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,iEAAiE;QACjE,KAAK,CAAC,MAAc,EAAE,OAAkC,EAAE;YACxD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,IAAA,aAAG,EAAC,MAAM,CAAC,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC;QACpG,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,436 @@
1
+ import { type RequestFn } from './request';
2
+ export type IgaKind = 'role' | 'org_membership' | 'group' | 'resource_role' | 'app_assignment' | 'custom';
3
+ export type IgaRisk = 'low' | 'medium' | 'high' | 'critical';
4
+ export type IgaApproverSelector = {
5
+ type: 'manager' | 'owner';
6
+ } | {
7
+ type: 'group' | 'users';
8
+ ids: string[];
9
+ };
10
+ export interface IgaApprovalStep {
11
+ type: 'manager' | 'owner' | 'group' | 'users';
12
+ /** A group slug (`group`) or user ids (`users`). */
13
+ ids?: string[];
14
+ /** `any` approver decides the step; `all` must approve. Default `any`. */
15
+ mode?: 'any' | 'all';
16
+ /** After this long without a decision the step escalates. */
17
+ timeout_seconds?: number;
18
+ escalate_to?: IgaApproverSelector;
19
+ }
20
+ export interface IgaEntitlement {
21
+ object: 'iga_entitlement';
22
+ id: string;
23
+ key: string;
24
+ name: string;
25
+ description: string | null;
26
+ kind: IgaKind;
27
+ target: Record<string, unknown>;
28
+ owner_user_id: string | null;
29
+ risk_level: IgaRisk;
30
+ approval_rules: {
31
+ steps: IgaApprovalStep[];
32
+ };
33
+ max_duration_seconds: number | null;
34
+ requestable: boolean;
35
+ require_justification: boolean;
36
+ created_at: number;
37
+ updated_at: number;
38
+ }
39
+ export interface IgaEntitlementInput {
40
+ key: string;
41
+ name: string;
42
+ kind: IgaKind;
43
+ /** role `{role_key}`, org_membership `{organization_id, role}`, group `{group}`, resource_role `{resource_id, role}`, app_assignment `{app_id}`, custom (free-form). */
44
+ target: Record<string, unknown>;
45
+ description?: string | null;
46
+ owner_user_id?: string | null;
47
+ risk_level?: IgaRisk;
48
+ approval_rules?: {
49
+ steps: IgaApprovalStep[];
50
+ };
51
+ max_duration_seconds?: number | null;
52
+ requestable?: boolean;
53
+ require_justification?: boolean;
54
+ }
55
+ export type IgaRequestStatus = 'pending' | 'approved' | 'denied' | 'cancelled' | 'fulfilled' | 'failed';
56
+ export interface IgaRequest {
57
+ object: 'iga_request';
58
+ id: string;
59
+ entitlement_id: string;
60
+ requester_user_id: string | null;
61
+ beneficiary_user_id: string;
62
+ source: 'self' | 'admin';
63
+ justification: string | null;
64
+ duration_seconds: number | null;
65
+ status: IgaRequestStatus;
66
+ current_step: number | null;
67
+ steps: Array<{
68
+ index: number;
69
+ type: string;
70
+ mode: 'any' | 'all';
71
+ approvers: string[];
72
+ status: 'pending' | 'approved' | 'denied';
73
+ escalated: boolean;
74
+ timeout_seconds: number | null;
75
+ sod_rule_id: string | null;
76
+ }>;
77
+ sod: Array<{
78
+ rule_id: string;
79
+ rule_name: string;
80
+ mode: 'block' | 'require_approval';
81
+ conflicting_entitlement_id: string;
82
+ }>;
83
+ approvals: Array<{
84
+ step: number;
85
+ approver_user_id: string;
86
+ acting_for_user_id: string | null;
87
+ decision: 'approve' | 'deny';
88
+ comment: string | null;
89
+ decided_at: number;
90
+ }>;
91
+ failure: string | null;
92
+ decided_at: number | null;
93
+ created_at: number;
94
+ }
95
+ export interface IgaGrant {
96
+ object: 'iga_grant';
97
+ id: string;
98
+ user_id: string;
99
+ entitlement_id: string;
100
+ request_id: string | null;
101
+ source: 'request' | 'admin' | 'birthright' | 'existing';
102
+ status: 'active' | 'revoked' | 'expired';
103
+ granted_at: number;
104
+ expires_at: number | null;
105
+ revoked_at: number | null;
106
+ revoked_reason: string | null;
107
+ revoked_by: string | null;
108
+ /** The access existed before governance took it over; an expiry leaves it in place. */
109
+ adopted: boolean;
110
+ }
111
+ export interface IgaDelegation {
112
+ object: 'iga_delegation';
113
+ id: string;
114
+ delegator_user_id: string;
115
+ delegate_user_id: string;
116
+ starts_at: number;
117
+ ends_at: number;
118
+ created_at: number;
119
+ }
120
+ export interface IgaSodRule {
121
+ object: 'iga_sod_rule';
122
+ id: string;
123
+ name: string;
124
+ description: string | null;
125
+ entitlement_a: string;
126
+ entitlement_b: string;
127
+ mode: 'block' | 'require_approval';
128
+ approver: IgaApprovalStep | null;
129
+ enabled: boolean;
130
+ created_at: number;
131
+ updated_at: number;
132
+ }
133
+ export interface IgaSodViolation {
134
+ object: 'iga_sod_violation';
135
+ id: string;
136
+ rule_id: string;
137
+ rule_name: string | null;
138
+ mode: string | null;
139
+ user_id: string;
140
+ status: 'open' | 'accepted' | 'resolved';
141
+ source: 'request' | 'assignment' | 'scan';
142
+ request_id: string | null;
143
+ note: string | null;
144
+ detected_at: number;
145
+ resolved_at: number | null;
146
+ }
147
+ export interface IgaBirthrightMatch {
148
+ group?: string;
149
+ organization_id?: string;
150
+ org_role?: string;
151
+ app_role?: string;
152
+ email_domain?: string;
153
+ }
154
+ export interface IgaBirthrightRule {
155
+ object: 'iga_birthright_rule';
156
+ id: string;
157
+ name: string;
158
+ match: IgaBirthrightMatch;
159
+ entitlement_ids: string[];
160
+ revoke_on_unmatch: boolean;
161
+ enabled: boolean;
162
+ created_at: number;
163
+ }
164
+ export interface IgaSettings {
165
+ object: 'iga_settings';
166
+ jml_enabled: boolean;
167
+ leaver_action: 'revoke' | 'revoke_and_close';
168
+ leaver_close_grace_seconds: number | null;
169
+ }
170
+ export interface IgaCampaign {
171
+ object: 'iga_campaign';
172
+ id: string;
173
+ name: string;
174
+ description: string | null;
175
+ scope_type: 'all' | 'entitlement' | 'app' | 'role' | 'group' | 'org';
176
+ scope_ids: string[];
177
+ reviewer_type: 'manager' | 'owner' | 'named';
178
+ reviewer_ids: string[];
179
+ status: 'draft' | 'active' | 'closed';
180
+ due_at: number | null;
181
+ reminder_days: number[];
182
+ auto_revoke: boolean;
183
+ launched_at: number | null;
184
+ closed_at: number | null;
185
+ created_at: number;
186
+ }
187
+ export interface IgaCampaignInput {
188
+ name: string;
189
+ description?: string;
190
+ scope_type?: IgaCampaign['scope_type'];
191
+ scope_ids?: string[];
192
+ reviewer_type?: IgaCampaign['reviewer_type'];
193
+ reviewer_ids?: string[];
194
+ due_at?: number;
195
+ reminder_days?: number[];
196
+ /** Remove access reviewers marked for revocation when the campaign closes. Default true. */
197
+ auto_revoke?: boolean;
198
+ }
199
+ export interface IgaCampaignItem {
200
+ object: 'iga_campaign_item';
201
+ id: string;
202
+ campaign_id: string;
203
+ grant_id: string;
204
+ user_id: string;
205
+ entitlement_id: string;
206
+ reviewer_user_id: string | null;
207
+ decision: 'pending' | 'certified' | 'revoked';
208
+ decided_by: string | null;
209
+ decided_at: number | null;
210
+ comment: string | null;
211
+ revoked_applied: boolean;
212
+ }
213
+ export interface IgaCampaignProgress {
214
+ object: 'iga_campaign_progress';
215
+ campaign_id: string;
216
+ status: IgaCampaign['status'];
217
+ total: number;
218
+ pending: number;
219
+ certified: number;
220
+ revoked: number;
221
+ percent_complete: number;
222
+ overdue: boolean;
223
+ reviewers: Array<{
224
+ reviewer_user_id: string | null;
225
+ total: number;
226
+ decided: number;
227
+ }>;
228
+ }
229
+ export interface IgaEvidence {
230
+ object: 'iga_campaign_evidence';
231
+ campaign: IgaCampaign;
232
+ progress: IgaCampaignProgress;
233
+ generated_at: string;
234
+ items: Array<{
235
+ item_id: string;
236
+ user_id: string;
237
+ user_erased: boolean;
238
+ user_email_masked?: string | null;
239
+ entitlement_key: string | null;
240
+ entitlement_name: string | null;
241
+ risk_level: string | null;
242
+ reviewer_user_id: string | null;
243
+ decision: string;
244
+ decided_by: string | null;
245
+ decided_at: string | null;
246
+ revoked_applied: boolean;
247
+ }>;
248
+ }
249
+ export interface IgaOffboarding {
250
+ object: 'iga_offboarding';
251
+ user_id: string;
252
+ revoked_grants: number;
253
+ cancelled_requests: number;
254
+ account_closure: {
255
+ effective_at: number;
256
+ request_id: string;
257
+ } | null;
258
+ }
259
+ type List<T> = {
260
+ object: 'list';
261
+ data: T[];
262
+ has_more: boolean;
263
+ };
264
+ type Deleted<O extends string> = {
265
+ object: O;
266
+ id: string;
267
+ deleted: true;
268
+ };
269
+ /**
270
+ * Identity governance: the entitlement catalog, access requests with multi-step
271
+ * approvals, time-bound grants, certification campaigns, separation of duties
272
+ * and joiner/mover/leaver automation. Needs the `iga:read` / `iga:write` scopes.
273
+ */
274
+ export declare function igaResource(request: RequestFn): {
275
+ entitlements: {
276
+ list: (params?: {
277
+ kind?: IgaKind;
278
+ }) => Promise<List<IgaEntitlement>>;
279
+ get: (idOrKey: string) => Promise<IgaEntitlement>;
280
+ create: (body: IgaEntitlementInput) => Promise<IgaEntitlement>;
281
+ update: (idOrKey: string, body: Partial<Omit<IgaEntitlementInput, "key" | "kind">>) => Promise<IgaEntitlement>;
282
+ delete: (idOrKey: string) => Promise<Deleted<"iga_entitlement">>;
283
+ };
284
+ requests: {
285
+ list: (params?: {
286
+ status?: IgaRequestStatus;
287
+ user_id?: string;
288
+ requester_user_id?: string;
289
+ entitlement?: string;
290
+ limit?: number;
291
+ }) => Promise<List<IgaRequest>>;
292
+ get: (id: string) => Promise<IgaRequest>;
293
+ /** File a request for a user; it follows the entitlement's approval steps. */
294
+ create: (body: {
295
+ entitlement: string;
296
+ user_id: string;
297
+ requester_user_id?: string;
298
+ justification?: string;
299
+ duration_seconds?: number;
300
+ }) => Promise<IgaRequest>;
301
+ /** Decide the open step as `approver_user_id`, or as an administrator override when omitted. */
302
+ decide: (id: string, body: {
303
+ decision: "approve" | "deny";
304
+ comment?: string;
305
+ approver_user_id?: string;
306
+ }) => Promise<IgaRequest>;
307
+ cancel: (id: string) => Promise<IgaRequest>;
308
+ /** Requests waiting on one person (their own steps and delegated ones). */
309
+ inbox: (approverUserId: string) => Promise<List<IgaRequest>>;
310
+ };
311
+ grants: {
312
+ list: (params?: {
313
+ user_id?: string;
314
+ entitlement?: string;
315
+ status?: "active" | "revoked" | "expired";
316
+ limit?: number;
317
+ }) => Promise<List<IgaGrant>>;
318
+ create: (body: {
319
+ entitlement: string;
320
+ user_id: string;
321
+ expires_at?: number;
322
+ override_reason?: string;
323
+ }) => Promise<IgaGrant>;
324
+ revoke: (id: string, body?: {
325
+ reason?: string;
326
+ }) => Promise<IgaGrant>;
327
+ };
328
+ delegations: {
329
+ list: (params?: {
330
+ delegator_user_id?: string;
331
+ }) => Promise<List<IgaDelegation>>;
332
+ create: (body: {
333
+ delegator_user_id: string;
334
+ delegate_user_id: string;
335
+ ends_at: number;
336
+ starts_at?: number;
337
+ }) => Promise<IgaDelegation>;
338
+ delete: (id: string) => Promise<Deleted<"iga_delegation">>;
339
+ };
340
+ sod: {
341
+ listRules: () => Promise<List<IgaSodRule>>;
342
+ createRule: (body: {
343
+ name: string;
344
+ entitlement_a: string;
345
+ entitlement_b: string;
346
+ mode?: "block" | "require_approval";
347
+ approver?: IgaApprovalStep;
348
+ description?: string;
349
+ enabled?: boolean;
350
+ }) => Promise<IgaSodRule>;
351
+ updateRule: (id: string, body: {
352
+ name?: string;
353
+ description?: string;
354
+ mode?: "block" | "require_approval";
355
+ approver?: IgaApprovalStep;
356
+ enabled?: boolean;
357
+ }) => Promise<IgaSodRule>;
358
+ deleteRule: (id: string) => Promise<Deleted<"iga_sod_rule">>;
359
+ /** The violations report. */
360
+ violations: (params?: {
361
+ status?: "open" | "accepted" | "resolved";
362
+ }) => Promise<List<IgaSodViolation>>;
363
+ /** Re-check every rule against what people hold now. */
364
+ scan: () => Promise<{
365
+ object: "iga_sod_scan";
366
+ found: number;
367
+ resolved: number;
368
+ }>;
369
+ };
370
+ lifecycle: {
371
+ listBirthrightRules: () => Promise<List<IgaBirthrightRule>>;
372
+ createBirthrightRule: (body: {
373
+ name: string;
374
+ match: IgaBirthrightMatch;
375
+ entitlement_ids: string[];
376
+ revoke_on_unmatch?: boolean;
377
+ enabled?: boolean;
378
+ }) => Promise<IgaBirthrightRule>;
379
+ updateBirthrightRule: (id: string, body: Partial<{
380
+ name: string;
381
+ match: IgaBirthrightMatch;
382
+ entitlement_ids: string[];
383
+ revoke_on_unmatch: boolean;
384
+ enabled: boolean;
385
+ }>) => Promise<IgaBirthrightRule>;
386
+ deleteBirthrightRule: (id: string) => Promise<Deleted<"iga_birthright_rule">>;
387
+ /** Re-evaluate one user's birthright access now (joiner or mover). */
388
+ reconcile: (userId: string) => Promise<{
389
+ object: "iga_jml";
390
+ user_id: string;
391
+ granted: string[];
392
+ revoked: string[];
393
+ }>;
394
+ /** Offboard a leaver; with `close_account` the closure goes through the data-rights path. */
395
+ offboard: (userId: string, body?: {
396
+ close_account?: boolean;
397
+ grace_seconds?: number;
398
+ reason?: string;
399
+ }) => Promise<IgaOffboarding>;
400
+ settings: () => Promise<IgaSettings>;
401
+ updateSettings: (body: Partial<Omit<IgaSettings, "object">>) => Promise<IgaSettings>;
402
+ };
403
+ campaigns: {
404
+ list: (params?: {
405
+ status?: IgaCampaign["status"];
406
+ }) => Promise<List<IgaCampaign>>;
407
+ get: (id: string) => Promise<IgaCampaign & {
408
+ progress: IgaCampaignProgress;
409
+ }>;
410
+ create: (body: IgaCampaignInput) => Promise<IgaCampaign>;
411
+ delete: (id: string) => Promise<Deleted<"iga_campaign">>;
412
+ /** Freeze the review list (adopting access that was never granted through governance) and notify reviewers. */
413
+ launch: (id: string) => Promise<IgaCampaign>;
414
+ /** Close the campaign; with auto-revoke, access reviewers marked for revocation is removed. */
415
+ close: (id: string) => Promise<IgaCampaign>;
416
+ items: (id: string, params?: {
417
+ decision?: IgaCampaignItem["decision"];
418
+ reviewer_user_id?: string;
419
+ }) => Promise<List<IgaCampaignItem>>;
420
+ progress: (id: string) => Promise<IgaCampaignProgress>;
421
+ /** Audit evidence as JSON. People appear by id only; free-text comments are never included. */
422
+ evidence: (id: string, params?: {
423
+ masked_emails?: boolean;
424
+ }) => Promise<IgaEvidence>;
425
+ /** The same evidence as CSV text. */
426
+ evidenceCsv: (id: string, params?: {
427
+ masked_emails?: boolean;
428
+ }) => Promise<string>;
429
+ decide: (itemId: string, body: {
430
+ decision: "certify" | "revoke";
431
+ comment?: string;
432
+ reviewer_user_id?: string;
433
+ }) => Promise<IgaCampaignItem>;
434
+ };
435
+ };
436
+ export {};