@atlasauth/backend 0.1.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 (157) hide show
  1. package/dist/client/actions.d.ts +86 -0
  2. package/dist/client/actions.js +40 -0
  3. package/dist/client/actions.js.map +1 -0
  4. package/dist/client/actor-tokens.d.ts +28 -0
  5. package/dist/client/actor-tokens.js +15 -0
  6. package/dist/client/actor-tokens.js.map +1 -0
  7. package/dist/client/api-keys.d.ts +77 -0
  8. package/dist/client/api-keys.js +31 -0
  9. package/dist/client/api-keys.js.map +1 -0
  10. package/dist/client/attack-protection.d.ts +41 -0
  11. package/dist/client/attack-protection.js +14 -0
  12. package/dist/client/attack-protection.js.map +1 -0
  13. package/dist/client/audit-logs.d.ts +20 -0
  14. package/dist/client/audit-logs.js +11 -0
  15. package/dist/client/audit-logs.js.map +1 -0
  16. package/dist/client/billing-plans.d.ts +81 -0
  17. package/dist/client/billing-plans.js +27 -0
  18. package/dist/client/billing-plans.js.map +1 -0
  19. package/dist/client/bot-signals.d.ts +88 -0
  20. package/dist/client/bot-signals.js +24 -0
  21. package/dist/client/bot-signals.js.map +1 -0
  22. package/dist/client/branding.d.ts +140 -0
  23. package/dist/client/branding.js +19 -0
  24. package/dist/client/branding.js.map +1 -0
  25. package/dist/client/data-subject-requests.d.ts +40 -0
  26. package/dist/client/data-subject-requests.js +32 -0
  27. package/dist/client/data-subject-requests.js.map +1 -0
  28. package/dist/client/domains.d.ts +45 -0
  29. package/dist/client/domains.js +21 -0
  30. package/dist/client/domains.js.map +1 -0
  31. package/dist/client/email-templates.d.ts +51 -0
  32. package/dist/client/email-templates.js +24 -0
  33. package/dist/client/email-templates.js.map +1 -0
  34. package/dist/client/error.d.ts +31 -0
  35. package/dist/client/error.js +28 -0
  36. package/dist/client/error.js.map +1 -0
  37. package/dist/client/fga.d.ts +191 -0
  38. package/dist/client/fga.js +91 -0
  39. package/dist/client/fga.js.map +1 -0
  40. package/dist/client/import-export.d.ts +88 -0
  41. package/dist/client/import-export.js +28 -0
  42. package/dist/client/import-export.js.map +1 -0
  43. package/dist/client/index.d.ts +796 -0
  44. package/dist/client/index.js +174 -0
  45. package/dist/client/index.js.map +1 -0
  46. package/dist/client/instance-security.d.ts +79 -0
  47. package/dist/client/instance-security.js +44 -0
  48. package/dist/client/instance-security.js.map +1 -0
  49. package/dist/client/instance.d.ts +34 -0
  50. package/dist/client/instance.js +14 -0
  51. package/dist/client/instance.js.map +1 -0
  52. package/dist/client/invitations.d.ts +21 -0
  53. package/dist/client/invitations.js +18 -0
  54. package/dist/client/invitations.js.map +1 -0
  55. package/dist/client/jwt-templates.d.ts +26 -0
  56. package/dist/client/jwt-templates.js +26 -0
  57. package/dist/client/jwt-templates.js.map +1 -0
  58. package/dist/client/localizations.d.ts +43 -0
  59. package/dist/client/localizations.js +24 -0
  60. package/dist/client/localizations.js.map +1 -0
  61. package/dist/client/log-streams.d.ts +66 -0
  62. package/dist/client/log-streams.js +28 -0
  63. package/dist/client/log-streams.js.map +1 -0
  64. package/dist/client/lti-platforms.d.ts +49 -0
  65. package/dist/client/lti-platforms.js +24 -0
  66. package/dist/client/lti-platforms.js.map +1 -0
  67. package/dist/client/managed-waf.d.ts +100 -0
  68. package/dist/client/managed-waf.js +33 -0
  69. package/dist/client/managed-waf.js.map +1 -0
  70. package/dist/client/messaging.d.ts +56 -0
  71. package/dist/client/messaging.js +30 -0
  72. package/dist/client/messaging.js.map +1 -0
  73. package/dist/client/network-acls.d.ts +50 -0
  74. package/dist/client/network-acls.js +29 -0
  75. package/dist/client/network-acls.js.map +1 -0
  76. package/dist/client/oauth-clients.d.ts +75 -0
  77. package/dist/client/oauth-clients.js +45 -0
  78. package/dist/client/oauth-clients.js.map +1 -0
  79. package/dist/client/oauth-providers.d.ts +109 -0
  80. package/dist/client/oauth-providers.js +48 -0
  81. package/dist/client/oauth-providers.js.map +1 -0
  82. package/dist/client/organizations.d.ts +211 -0
  83. package/dist/client/organizations.js +136 -0
  84. package/dist/client/organizations.js.map +1 -0
  85. package/dist/client/paginate.d.ts +16 -0
  86. package/dist/client/paginate.js +35 -0
  87. package/dist/client/paginate.js.map +1 -0
  88. package/dist/client/radius-clients.d.ts +52 -0
  89. package/dist/client/radius-clients.js +24 -0
  90. package/dist/client/radius-clients.js.map +1 -0
  91. package/dist/client/rate-limit.d.ts +37 -0
  92. package/dist/client/rate-limit.js +20 -0
  93. package/dist/client/rate-limit.js.map +1 -0
  94. package/dist/client/request.d.ts +52 -0
  95. package/dist/client/request.js +102 -0
  96. package/dist/client/request.js.map +1 -0
  97. package/dist/client/resource-servers.d.ts +44 -0
  98. package/dist/client/resource-servers.js +24 -0
  99. package/dist/client/resource-servers.js.map +1 -0
  100. package/dist/client/restrictions.d.ts +39 -0
  101. package/dist/client/restrictions.js +29 -0
  102. package/dist/client/restrictions.js.map +1 -0
  103. package/dist/client/risk-based-mfa.d.ts +51 -0
  104. package/dist/client/risk-based-mfa.js +20 -0
  105. package/dist/client/risk-based-mfa.js.map +1 -0
  106. package/dist/client/roles.d.ts +84 -0
  107. package/dist/client/roles.js +57 -0
  108. package/dist/client/roles.js.map +1 -0
  109. package/dist/client/scim-provisioning.d.ts +94 -0
  110. package/dist/client/scim-provisioning.js +49 -0
  111. package/dist/client/scim-provisioning.js.map +1 -0
  112. package/dist/client/scim-tokens.d.ts +34 -0
  113. package/dist/client/scim-tokens.js +18 -0
  114. package/dist/client/scim-tokens.js.map +1 -0
  115. package/dist/client/sessions.d.ts +58 -0
  116. package/dist/client/sessions.js +26 -0
  117. package/dist/client/sessions.js.map +1 -0
  118. package/dist/client/sign-in-tokens.d.ts +18 -0
  119. package/dist/client/sign-in-tokens.js +11 -0
  120. package/dist/client/sign-in-tokens.js.map +1 -0
  121. package/dist/client/sms-templates.d.ts +46 -0
  122. package/dist/client/sms-templates.js +30 -0
  123. package/dist/client/sms-templates.js.map +1 -0
  124. package/dist/client/sso-connections.d.ts +76 -0
  125. package/dist/client/sso-connections.js +28 -0
  126. package/dist/client/sso-connections.js.map +1 -0
  127. package/dist/client/sso-onboarding.d.ts +76 -0
  128. package/dist/client/sso-onboarding.js +42 -0
  129. package/dist/client/sso-onboarding.js.map +1 -0
  130. package/dist/client/tokens.d.ts +37 -0
  131. package/dist/client/tokens.js +11 -0
  132. package/dist/client/tokens.js.map +1 -0
  133. package/dist/client/types.d.ts +41 -0
  134. package/dist/client/types.js +10 -0
  135. package/dist/client/types.js.map +1 -0
  136. package/dist/client/users.d.ts +204 -0
  137. package/dist/client/users.js +135 -0
  138. package/dist/client/users.js.map +1 -0
  139. package/dist/client/waitlist.d.ts +31 -0
  140. package/dist/client/waitlist.js +16 -0
  141. package/dist/client/waitlist.js.map +1 -0
  142. package/dist/client/webhooks.d.ts +50 -0
  143. package/dist/client/webhooks.js +24 -0
  144. package/dist/client/webhooks.js.map +1 -0
  145. package/dist/handshake.d.ts +76 -0
  146. package/dist/handshake.js +96 -0
  147. package/dist/handshake.js.map +1 -0
  148. package/dist/index.d.ts +6 -0
  149. package/dist/index.js +26 -0
  150. package/dist/index.js.map +1 -0
  151. package/dist/jwks-cache.d.ts +62 -0
  152. package/dist/jwks-cache.js +114 -0
  153. package/dist/jwks-cache.js.map +1 -0
  154. package/dist/verify.d.ts +162 -0
  155. package/dist/verify.js +226 -0
  156. package/dist/verify.js.map +1 -0
  157. package/package.json +26 -0
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_API_URL = void 0;
4
+ exports.serializeQuery = serializeQuery;
5
+ exports.enc = enc;
6
+ exports.createRequest = createRequest;
7
+ const error_1 = require("./error");
8
+ /** The default BAPI origin, overridable per instance via `apiUrl`. */
9
+ exports.DEFAULT_API_URL = 'https://api.atlas.dev';
10
+ /** Serialize a query object to a string, dropping null/undefined, spreading arrays. */
11
+ function serializeQuery(query) {
12
+ if (!query)
13
+ return '';
14
+ const parts = [];
15
+ for (const [key, value] of Object.entries(query)) {
16
+ if (value === undefined || value === null)
17
+ continue;
18
+ const values = Array.isArray(value) ? value : [value];
19
+ for (const v of values) {
20
+ if (v === undefined || v === null)
21
+ continue;
22
+ parts.push(`${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`);
23
+ }
24
+ }
25
+ return parts.length ? `?${parts.join('&')}` : '';
26
+ }
27
+ /** Percent-encode a single path segment (an id, slug, provider name). */
28
+ function enc(segment) {
29
+ return encodeURIComponent(segment);
30
+ }
31
+ function joinUrl(base, path) {
32
+ return `${base.replace(/\/+$/, '')}${path.startsWith('/') ? path : `/${path}`}`;
33
+ }
34
+ function createRequest(config) {
35
+ if (!config.secretKey) {
36
+ throw new Error('createAtlasClient requires a secretKey.');
37
+ }
38
+ const base = config.apiUrl ?? exports.DEFAULT_API_URL;
39
+ const fetchImpl = config.fetch ?? globalThis.fetch;
40
+ if (typeof fetchImpl !== 'function') {
41
+ throw new Error('No fetch implementation found. Pass { fetch } to createAtlasClient on a runtime without a global fetch.');
42
+ }
43
+ return async function request(options) {
44
+ const url = joinUrl(base, options.path) + serializeQuery(options.query);
45
+ const headers = {
46
+ authorization: `Bearer ${config.secretKey}`,
47
+ accept: 'application/json',
48
+ };
49
+ let body;
50
+ if (options.body !== undefined) {
51
+ headers['content-type'] = 'application/json';
52
+ body = JSON.stringify(options.body);
53
+ }
54
+ if (options.idempotencyKey) {
55
+ headers['idempotency-key'] = options.idempotencyKey;
56
+ }
57
+ const response = await fetchImpl(url, { method: options.method, headers, body });
58
+ if (!response.ok) {
59
+ throw await toApiError(response);
60
+ }
61
+ // 204 and other empty bodies: nothing to parse.
62
+ if (response.status === 204)
63
+ return undefined;
64
+ if (options.raw) {
65
+ return (await response.text());
66
+ }
67
+ const text = await response.text();
68
+ if (!text)
69
+ return undefined;
70
+ return JSON.parse(text);
71
+ };
72
+ }
73
+ async function toApiError(response) {
74
+ let errors = [];
75
+ let message;
76
+ const text = await response.text().catch(() => '');
77
+ if (text) {
78
+ try {
79
+ const parsed = JSON.parse(text);
80
+ if (Array.isArray(parsed.errors) && parsed.errors.length) {
81
+ errors = parsed.errors;
82
+ }
83
+ else {
84
+ message = text.slice(0, 500);
85
+ }
86
+ }
87
+ catch {
88
+ // Non-JSON error body (e.g. an upstream proxy): keep it as the message.
89
+ message = text.slice(0, 500);
90
+ }
91
+ }
92
+ if (!errors.length) {
93
+ errors = [
94
+ {
95
+ code: 'UNKNOWN',
96
+ message: message ?? `Atlas API request failed with status ${response.status}`,
97
+ },
98
+ ];
99
+ }
100
+ return new error_1.AtlasApiError(response.status, errors);
101
+ }
102
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/client/request.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { type RequestFn } from './request';
2
+ import type { ListPage } from './types';
3
+ export interface ResourceServerScope {
4
+ value: string;
5
+ description?: string;
6
+ }
7
+ export interface ResourceServer {
8
+ object: 'resource_server';
9
+ id: string;
10
+ identifier: string;
11
+ name: string;
12
+ scopes: ResourceServerScope[];
13
+ token_ttl_seconds: number;
14
+ signing_alg: string;
15
+ created_at: number;
16
+ updated_at: number;
17
+ }
18
+ export interface CreateResourceServerBody {
19
+ identifier: string;
20
+ name: string;
21
+ /** Each scope is a bare string or `{ value, description? }`. */
22
+ scopes?: Array<string | ResourceServerScope>;
23
+ token_ttl_seconds?: number;
24
+ signing_alg?: string;
25
+ }
26
+ export interface UpdateResourceServerBody {
27
+ name?: string;
28
+ scopes?: Array<string | ResourceServerScope>;
29
+ token_ttl_seconds?: number;
30
+ signing_alg?: string;
31
+ /** Immutable — supplying a different value is rejected. */
32
+ identifier?: string;
33
+ }
34
+ export declare function resourceServersResource(request: RequestFn): {
35
+ list(): Promise<ListPage<ResourceServer>>;
36
+ get(id: string): Promise<ResourceServer>;
37
+ create(body: CreateResourceServerBody): Promise<ResourceServer>;
38
+ update(id: string, body: UpdateResourceServerBody): Promise<ResourceServer>;
39
+ delete(id: string): Promise<{
40
+ object: "resource_server";
41
+ id: string;
42
+ deleted: true;
43
+ }>;
44
+ };
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resourceServersResource = resourceServersResource;
4
+ const request_1 = require("./request");
5
+ function resourceServersResource(request) {
6
+ return {
7
+ list() {
8
+ return request({ method: 'GET', path: '/v1/resource_servers' });
9
+ },
10
+ get(id) {
11
+ return request({ method: 'GET', path: `/v1/resource_servers/${(0, request_1.enc)(id)}` });
12
+ },
13
+ create(body) {
14
+ return request({ method: 'POST', path: '/v1/resource_servers', body });
15
+ },
16
+ update(id, body) {
17
+ return request({ method: 'PATCH', path: `/v1/resource_servers/${(0, request_1.enc)(id)}`, body });
18
+ },
19
+ delete(id) {
20
+ return request({ method: 'DELETE', path: `/v1/resource_servers/${(0, request_1.enc)(id)}` });
21
+ },
22
+ };
23
+ }
24
+ //# sourceMappingURL=resource-servers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-servers.js","sourceRoot":"","sources":["../../src/client/resource-servers.ts"],"names":[],"mappings":";;AAsCA,0DAkBC;AAxDD,uCAAgD;AAsChD,SAAgB,uBAAuB,CAAC,OAAkB;IACxD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,MAAM,CAAC,IAA8B;YACnC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAA8B;YAC/C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,wBAAwB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,wBAAwB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { type RequestFn } from './request';
2
+ export interface AllowlistIdentifier {
3
+ object: 'allowlist_identifier';
4
+ id: string;
5
+ identifier: string;
6
+ created_at: number;
7
+ }
8
+ export interface BlocklistIdentifier {
9
+ object: 'blocklist_identifier';
10
+ id: string;
11
+ identifier: string;
12
+ created_at: number;
13
+ }
14
+ export declare function allowlistResource(request: RequestFn): {
15
+ list(): Promise<{
16
+ object: "list";
17
+ data: AllowlistIdentifier[];
18
+ has_more: false;
19
+ }>;
20
+ add(identifier: string): Promise<AllowlistIdentifier>;
21
+ remove(id: string): Promise<{
22
+ object: string;
23
+ id: string;
24
+ deleted: true;
25
+ }>;
26
+ };
27
+ export declare function blocklistResource(request: RequestFn): {
28
+ list(): Promise<{
29
+ object: "list";
30
+ data: BlocklistIdentifier[];
31
+ has_more: false;
32
+ }>;
33
+ add(identifier: string): Promise<BlocklistIdentifier>;
34
+ remove(id: string): Promise<{
35
+ object: string;
36
+ id: string;
37
+ deleted: true;
38
+ }>;
39
+ };
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.allowlistResource = allowlistResource;
4
+ exports.blocklistResource = blocklistResource;
5
+ const request_1 = require("./request");
6
+ /**
7
+ * Allowlist and blocklist share an identical route shape, so they share a
8
+ * factory. `path` and the `object` literal differ; nothing else does.
9
+ */
10
+ function restrictionResource(request, path) {
11
+ return {
12
+ list() {
13
+ return request({ method: 'GET', path });
14
+ },
15
+ add(identifier) {
16
+ return request({ method: 'POST', path, body: { identifier } });
17
+ },
18
+ remove(id) {
19
+ return request({ method: 'DELETE', path: `${path}/${(0, request_1.enc)(id)}` });
20
+ },
21
+ };
22
+ }
23
+ function allowlistResource(request) {
24
+ return restrictionResource(request, '/v1/allowlist_identifiers');
25
+ }
26
+ function blocklistResource(request) {
27
+ return restrictionResource(request, '/v1/blocklist_identifiers');
28
+ }
29
+ //# sourceMappingURL=restrictions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"restrictions.js","sourceRoot":"","sources":["../../src/client/restrictions.ts"],"names":[],"mappings":";;AAkCA,8CAEC;AAED,8CAEC;AAxCD,uCAAgD;AAgBhD;;;GAGG;AACH,SAAS,mBAAmB,CAA2B,OAAkB,EAAE,IAAY;IACrF,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;QACD,GAAG,CAAC,UAAkB;YACpB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACnE,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAAkB;IAClD,OAAO,mBAAmB,CAAsB,OAAO,EAAE,2BAA2B,CAAC,CAAC;AACxF,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAAkB;IAClD,OAAO,mBAAmB,CAAsB,OAAO,EAAE,2BAA2B,CAAC,CAAC;AACxF,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { type RequestFn } from './request';
2
+ /** The risk level at or above which a sign-in is stepped up. */
3
+ export type RiskLevel = 'low' | 'medium' | 'high';
4
+ /** What to do at high risk when the user has NO enrolled factor. */
5
+ export type OnHighRiskNoFactor = 'allow' | 'block' | 'require_enroll';
6
+ /** Per-signal score weights that feed the risk total. */
7
+ export interface RiskWeights {
8
+ newDevice: number;
9
+ newSubnet: number;
10
+ newIp: number;
11
+ velocity: number;
12
+ impossibleTravel: number;
13
+ }
14
+ /** Per-signal on/off toggles. A disabled signal contributes nothing. */
15
+ export interface RiskSignalToggles {
16
+ newDevice: boolean;
17
+ newSubnet: boolean;
18
+ newIp: boolean;
19
+ velocity: boolean;
20
+ impossibleTravel: boolean;
21
+ }
22
+ /**
23
+ * Adaptive / risk-based MFA config (Auth0 "Adaptive MFA" parity). OFF by
24
+ * default and can only ever ADD friction — nothing here can weaken the sign-in
25
+ * gate.
26
+ */
27
+ export interface RiskBasedMfa {
28
+ object: 'risk_based_mfa';
29
+ enabled: boolean;
30
+ step_up_threshold: RiskLevel;
31
+ on_high_risk_no_factor: OnHighRiskNoFactor;
32
+ weights: RiskWeights;
33
+ signals: RiskSignalToggles;
34
+ }
35
+ export interface UpdateRiskBasedMfaBody {
36
+ enabled?: boolean;
37
+ step_up_threshold?: RiskLevel;
38
+ on_high_risk_no_factor?: OnHighRiskNoFactor;
39
+ weights?: Partial<RiskWeights>;
40
+ signals?: Partial<RiskSignalToggles>;
41
+ }
42
+ /**
43
+ * Read and tune the instance's adaptive-MFA engine — when a second factor is
44
+ * demanded, and how each risk signal is weighted.
45
+ */
46
+ export declare function riskBasedMfaResource(request: RequestFn): {
47
+ /** Read the current adaptive-MFA config. */
48
+ get(): Promise<RiskBasedMfa>;
49
+ /** Change any subset of the config; omitted fields are left unchanged. */
50
+ update(body: UpdateRiskBasedMfaBody): Promise<RiskBasedMfa>;
51
+ };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.riskBasedMfaResource = riskBasedMfaResource;
4
+ /**
5
+ * Read and tune the instance's adaptive-MFA engine — when a second factor is
6
+ * demanded, and how each risk signal is weighted.
7
+ */
8
+ function riskBasedMfaResource(request) {
9
+ return {
10
+ /** Read the current adaptive-MFA config. */
11
+ get() {
12
+ return request({ method: 'GET', path: '/v1/risk_based_mfa' });
13
+ },
14
+ /** Change any subset of the config; omitted fields are left unchanged. */
15
+ update(body) {
16
+ return request({ method: 'PATCH', path: '/v1/risk_based_mfa', body });
17
+ },
18
+ };
19
+ }
20
+ //# sourceMappingURL=risk-based-mfa.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"risk-based-mfa.js","sourceRoot":"","sources":["../../src/client/risk-based-mfa.ts"],"names":[],"mappings":";;AAoDA,oDAWC;AAfD;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,OAAkB;IACrD,OAAO;QACL,4CAA4C;QAC5C,GAAG;YACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,0EAA0E;QAC1E,MAAM,CAAC,IAA4B;YACjC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,84 @@
1
+ import { type RequestFn } from './request';
2
+ import type { ListPage } from './types';
3
+ export interface Role {
4
+ object: 'role';
5
+ id: string;
6
+ key: string;
7
+ name: string;
8
+ description: string | null;
9
+ is_system: boolean;
10
+ permissions: string[];
11
+ member_count: number;
12
+ created_at: number;
13
+ }
14
+ export interface Permission {
15
+ object: 'permission';
16
+ id: string;
17
+ key: string;
18
+ name: string;
19
+ description: string | null;
20
+ is_system: boolean;
21
+ }
22
+ export interface CreateRoleBody {
23
+ key: string;
24
+ name: string;
25
+ description?: string;
26
+ permissions?: string[];
27
+ }
28
+ export interface UpdateRoleBody {
29
+ name?: string;
30
+ description?: string;
31
+ /** May be supplied but must equal the current key — the key is immutable. */
32
+ key?: string;
33
+ }
34
+ /** `PUT /v1/roles/:id/permissions` returns this reduced shape, not a full Role. */
35
+ export interface RolePermissionsResult {
36
+ object: 'role';
37
+ id: string;
38
+ key: string;
39
+ permissions: string[];
40
+ ignored: string[];
41
+ }
42
+ export declare function rolesResource(request: RequestFn): {
43
+ list(): Promise<ListPage<Role>>;
44
+ create(body: CreateRoleBody, idempotencyKey?: string): Promise<Role>;
45
+ update(id: string, body: UpdateRoleBody): Promise<Role>;
46
+ /** Replace a role's permission set wholesale. */
47
+ setPermissions(id: string, permissions: string[]): Promise<RolePermissionsResult>;
48
+ /**
49
+ * Delete a role. Pass `{ reassignTo }` to move every member onto another
50
+ * role first (atomic, before the delete) so an in-use role can be retired;
51
+ * without it, deleting a role people still hold fails with `role_in_use`.
52
+ */
53
+ delete(id: string, opts?: {
54
+ reassignTo?: string;
55
+ }): Promise<{
56
+ object: "role";
57
+ id: string;
58
+ deleted: true;
59
+ members_reassigned: number;
60
+ }>;
61
+ };
62
+ export interface CreatePermissionBody {
63
+ key: string;
64
+ name?: string;
65
+ description?: string;
66
+ }
67
+ export interface UpdatePermissionBody {
68
+ name?: string;
69
+ description?: string | null;
70
+ /** May be supplied but must equal the current key — the key is immutable. */
71
+ key?: string;
72
+ }
73
+ export declare function permissionsResource(request: RequestFn): {
74
+ list(): Promise<ListPage<Permission>>;
75
+ create(body: CreatePermissionBody, idempotencyKey?: string): Promise<Permission>;
76
+ /** Relabel a custom permission (name/description only — the key is immutable). */
77
+ update(id: string, body: UpdatePermissionBody): Promise<Permission>;
78
+ /** Delete a custom permission. Fails with `role_in_use` if a role still grants it. */
79
+ delete(id: string): Promise<{
80
+ object: "permission";
81
+ id: string;
82
+ deleted: true;
83
+ }>;
84
+ };
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.rolesResource = rolesResource;
4
+ exports.permissionsResource = permissionsResource;
5
+ const request_1 = require("./request");
6
+ function rolesResource(request) {
7
+ return {
8
+ list() {
9
+ return request({ method: 'GET', path: '/v1/roles' });
10
+ },
11
+ create(body, idempotencyKey) {
12
+ return request({ method: 'POST', path: '/v1/roles', body, idempotencyKey });
13
+ },
14
+ update(id, body) {
15
+ return request({ method: 'PATCH', path: `/v1/roles/${(0, request_1.enc)(id)}`, body });
16
+ },
17
+ /** Replace a role's permission set wholesale. */
18
+ setPermissions(id, permissions) {
19
+ return request({
20
+ method: 'PUT',
21
+ path: `/v1/roles/${(0, request_1.enc)(id)}/permissions`,
22
+ body: { permissions },
23
+ });
24
+ },
25
+ /**
26
+ * Delete a role. Pass `{ reassignTo }` to move every member onto another
27
+ * role first (atomic, before the delete) so an in-use role can be retired;
28
+ * without it, deleting a role people still hold fails with `role_in_use`.
29
+ */
30
+ delete(id, opts) {
31
+ return request({
32
+ method: 'DELETE',
33
+ path: `/v1/roles/${(0, request_1.enc)(id)}`,
34
+ query: opts?.reassignTo ? { reassign_to: opts.reassignTo } : undefined,
35
+ });
36
+ },
37
+ };
38
+ }
39
+ function permissionsResource(request) {
40
+ return {
41
+ list() {
42
+ return request({ method: 'GET', path: '/v1/permissions' });
43
+ },
44
+ create(body, idempotencyKey) {
45
+ return request({ method: 'POST', path: '/v1/permissions', body, idempotencyKey });
46
+ },
47
+ /** Relabel a custom permission (name/description only — the key is immutable). */
48
+ update(id, body) {
49
+ return request({ method: 'PATCH', path: `/v1/permissions/${(0, request_1.enc)(id)}`, body });
50
+ },
51
+ /** Delete a custom permission. Fails with `role_in_use` if a role still grants it. */
52
+ delete(id) {
53
+ return request({ method: 'DELETE', path: `/v1/permissions/${(0, request_1.enc)(id)}` });
54
+ },
55
+ };
56
+ }
57
+ //# sourceMappingURL=roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/client/roles.ts"],"names":[],"mappings":";;AA+CA,sCAmCC;AAeD,kDAiBC;AAlHD,uCAAgD;AA+ChD,SAAgB,aAAa,CAAC,OAAkB;IAC9C,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,CAAC,IAAoB,EAAE,cAAuB;YAClD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAAoB;YACrC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,iDAAiD;QACjD,cAAc,CAAC,EAAU,EAAE,WAAqB;YAC9C,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,aAAa,IAAA,aAAG,EAAC,EAAE,CAAC,cAAc;gBACxC,IAAI,EAAE,EAAE,WAAW,EAAE;aACtB,CAAC,CAAC;QACL,CAAC;QACD;;;;WAIG;QACH,MAAM,CACJ,EAAU,EACV,IAA8B;YAE9B,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,aAAa,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE;gBAC5B,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;aACvE,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAeD,SAAgB,mBAAmB,CAAC,OAAkB;IACpD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,CAAC,IAA0B,EAAE,cAAuB;YACxD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,kFAAkF;QAClF,MAAM,CAAC,EAAU,EAAE,IAA0B;YAC3C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,sFAAsF;QACtF,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3E,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,94 @@
1
+ import { type RequestFn } from './request';
2
+ import type { ListPage } from './types';
3
+ /**
4
+ * An OUTBOUND SCIM provisioning target — a downstream SCIM 2.0 endpoint Atlas
5
+ * pushes its users/groups OUT to (Clerk/Auth0 "directory provisioning" parity,
6
+ * the reverse of the inbound SCIM server). The `bearer_token` is write-only:
7
+ * stored encrypted and never returned, so a read reports only `has_bearer_token`.
8
+ */
9
+ export interface ScimProvisioningTarget {
10
+ object: 'scim_provisioning_target';
11
+ id: string;
12
+ name: string;
13
+ base_url: string;
14
+ /** Whether a bearer is set — never the value. */
15
+ has_bearer_token: boolean;
16
+ enabled: boolean;
17
+ attribute_mapping: Record<string, unknown>;
18
+ deprovision_action: string;
19
+ status: string;
20
+ cursor: string | null;
21
+ consecutive_failures: number;
22
+ last_error: string | null;
23
+ last_synced_at: number | null;
24
+ created_at: number;
25
+ updated_at: number;
26
+ }
27
+ export interface CreateScimProvisioningTargetBody {
28
+ name: string;
29
+ /** Must be an https:// URL so the bearer never travels in cleartext. */
30
+ base_url: string;
31
+ /** Write-only; stored encrypted, never returned. */
32
+ bearer_token: string;
33
+ attribute_mapping?: Record<string, unknown>;
34
+ deprovision_action?: 'deactivate' | 'delete';
35
+ enabled?: boolean;
36
+ }
37
+ export interface UpdateScimProvisioningTargetBody {
38
+ name?: string;
39
+ base_url?: string;
40
+ /** Write-only; omit to leave the stored bearer unchanged. */
41
+ bearer_token?: string;
42
+ attribute_mapping?: Record<string, unknown>;
43
+ deprovision_action?: 'deactivate' | 'delete';
44
+ enabled?: boolean;
45
+ status?: 'active' | 'paused';
46
+ }
47
+ /** The connectivity/auth probe's outcome (GET ServiceProviderConfig; writes nothing). */
48
+ export interface ScimProvisioningTestResult {
49
+ object: 'scim_provisioning_test_result';
50
+ id: string;
51
+ ok: boolean;
52
+ status: number | null;
53
+ error: string | null;
54
+ }
55
+ /** The result of forcing one user's sync now. */
56
+ export interface ScimProvisioningSyncResult {
57
+ object: 'scim_provisioning_sync_result';
58
+ id: string;
59
+ user_id: string;
60
+ action: string;
61
+ ok: boolean;
62
+ status: number | null;
63
+ remote_id: string | null;
64
+ error: string | null;
65
+ }
66
+ /** The result of forcing one org's (group) sync now. */
67
+ export interface ScimProvisioningGroupSyncResult {
68
+ object: 'scim_provisioning_group_sync_result';
69
+ id: string;
70
+ organization_id: string;
71
+ action: string;
72
+ ok: boolean;
73
+ status: number | null;
74
+ remote_id: string | null;
75
+ member_count: number;
76
+ error: string | null;
77
+ }
78
+ export declare function scimProvisioningResource(request: RequestFn): {
79
+ list(): Promise<ListPage<ScimProvisioningTarget>>;
80
+ get(id: string): Promise<ScimProvisioningTarget>;
81
+ create(body: CreateScimProvisioningTargetBody, idempotencyKey?: string): Promise<ScimProvisioningTarget>;
82
+ update(id: string, body: UpdateScimProvisioningTargetBody): Promise<ScimProvisioningTarget>;
83
+ delete(id: string): Promise<{
84
+ object: "scim_provisioning_target";
85
+ id: string;
86
+ deleted: true;
87
+ }>;
88
+ /** Probe connectivity + auth to the downstream with the real bearer. Writes nothing. */
89
+ test(id: string): Promise<ScimProvisioningTestResult>;
90
+ /** Force one user's sync now (backfill / re-push), out of band from the worker. */
91
+ syncUser(id: string, userId: string): Promise<ScimProvisioningSyncResult>;
92
+ /** Force one org's (group) sync now; only already-provisioned members are sent. */
93
+ syncGroup(id: string, organizationId: string): Promise<ScimProvisioningGroupSyncResult>;
94
+ };
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.scimProvisioningResource = scimProvisioningResource;
4
+ const request_1 = require("./request");
5
+ function scimProvisioningResource(request) {
6
+ return {
7
+ list() {
8
+ return request({ method: 'GET', path: '/v1/scim_provisioning_targets' });
9
+ },
10
+ get(id) {
11
+ return request({ method: 'GET', path: `/v1/scim_provisioning_targets/${(0, request_1.enc)(id)}` });
12
+ },
13
+ create(body, idempotencyKey) {
14
+ return request({
15
+ method: 'POST',
16
+ path: '/v1/scim_provisioning_targets',
17
+ body,
18
+ idempotencyKey,
19
+ });
20
+ },
21
+ update(id, body) {
22
+ return request({ method: 'PATCH', path: `/v1/scim_provisioning_targets/${(0, request_1.enc)(id)}`, body });
23
+ },
24
+ delete(id) {
25
+ return request({ method: 'DELETE', path: `/v1/scim_provisioning_targets/${(0, request_1.enc)(id)}` });
26
+ },
27
+ /** Probe connectivity + auth to the downstream with the real bearer. Writes nothing. */
28
+ test(id) {
29
+ return request({ method: 'POST', path: `/v1/scim_provisioning_targets/${(0, request_1.enc)(id)}/test` });
30
+ },
31
+ /** Force one user's sync now (backfill / re-push), out of band from the worker. */
32
+ syncUser(id, userId) {
33
+ return request({
34
+ method: 'POST',
35
+ path: `/v1/scim_provisioning_targets/${(0, request_1.enc)(id)}/sync_user`,
36
+ body: { user_id: userId },
37
+ });
38
+ },
39
+ /** Force one org's (group) sync now; only already-provisioned members are sent. */
40
+ syncGroup(id, organizationId) {
41
+ return request({
42
+ method: 'POST',
43
+ path: `/v1/scim_provisioning_targets/${(0, request_1.enc)(id)}/sync_group`,
44
+ body: { organization_id: organizationId },
45
+ });
46
+ },
47
+ };
48
+ }
49
+ //# sourceMappingURL=scim-provisioning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scim-provisioning.js","sourceRoot":"","sources":["../../src/client/scim-provisioning.ts"],"names":[],"mappings":";;AAoFA,4DAmDC;AAvID,uCAAgD;AAoFhD,SAAgB,wBAAwB,CAAC,OAAkB;IACzD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iCAAiC,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,CACJ,IAAsC,EACtC,cAAuB;YAEvB,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,+BAA+B;gBACrC,IAAI;gBACJ,cAAc;aACf,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CACJ,EAAU,EACV,IAAsC;YAEtC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,iCAAiC,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,CACJ,EAAU;YAEV,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,iCAAiC,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,wFAAwF;QACxF,IAAI,CAAC,EAAU;YACb,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iCAAiC,IAAA,aAAG,EAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,mFAAmF;QACnF,QAAQ,CAAC,EAAU,EAAE,MAAc;YACjC,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,iCAAiC,IAAA,aAAG,EAAC,EAAE,CAAC,YAAY;gBAC1D,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;aAC1B,CAAC,CAAC;QACL,CAAC;QACD,mFAAmF;QACnF,SAAS,CAAC,EAAU,EAAE,cAAsB;YAC1C,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,iCAAiC,IAAA,aAAG,EAAC,EAAE,CAAC,aAAa;gBAC3D,IAAI,EAAE,EAAE,eAAe,EAAE,cAAc,EAAE;aAC1C,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { type RequestFn } from './request';
2
+ import type { ListPage } from './types';
3
+ export interface ScimToken {
4
+ object: 'scim_token';
5
+ id: string;
6
+ name: string | null;
7
+ organization_id: string;
8
+ connection_id: string | null;
9
+ prefix: string;
10
+ last_used_at: number | null;
11
+ expires_at: number | null;
12
+ revoked_at: number | null;
13
+ created_at: number;
14
+ }
15
+ /** Create reveals the usable secret exactly once. */
16
+ export interface ScimTokenWithSecret extends ScimToken {
17
+ secret: string;
18
+ note: string;
19
+ }
20
+ export interface CreateScimTokenBody {
21
+ organization_id: string;
22
+ name?: string;
23
+ connection_id?: string;
24
+ }
25
+ export declare function scimTokensResource(request: RequestFn): {
26
+ list(): Promise<ListPage<ScimToken>>;
27
+ create(body: CreateScimTokenBody, idempotencyKey?: string): Promise<ScimTokenWithSecret>;
28
+ revoke(id: string): Promise<{
29
+ object: "scim_token";
30
+ id: string;
31
+ revoked: true;
32
+ note: string;
33
+ }>;
34
+ };