@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,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.scimTokensResource = scimTokensResource;
4
+ const request_1 = require("./request");
5
+ function scimTokensResource(request) {
6
+ return {
7
+ list() {
8
+ return request({ method: 'GET', path: '/v1/scim_tokens' });
9
+ },
10
+ create(body, idempotencyKey) {
11
+ return request({ method: 'POST', path: '/v1/scim_tokens', body, idempotencyKey });
12
+ },
13
+ revoke(id) {
14
+ return request({ method: 'POST', path: `/v1/scim_tokens/${(0, request_1.enc)(id)}/revoke` });
15
+ },
16
+ };
17
+ }
18
+ //# sourceMappingURL=scim-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scim-tokens.js","sourceRoot":"","sources":["../../src/client/scim-tokens.ts"],"names":[],"mappings":";;AA4BA,gDAcC;AA1CD,uCAAgD;AA4BhD,SAAgB,kBAAkB,CAAC,OAAkB;IACnD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,CAAC,IAAyB,EAAE,cAAuB;YACvD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,CACJ,EAAU;YAEV,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAChF,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { type RequestFn } from './request';
2
+ import type { ListPage } from './types';
3
+ export interface Session {
4
+ object: 'session';
5
+ id: string;
6
+ user_id: string;
7
+ status: string;
8
+ last_active_organization_id: string | null;
9
+ impersonated_by: string | null;
10
+ last_active_at: number;
11
+ expire_at: number;
12
+ abandon_at: number;
13
+ created_at: number;
14
+ }
15
+ export interface ListSessionsParams {
16
+ /** Required by the BAPI: sessions are always scoped to one user. */
17
+ user_id: string;
18
+ }
19
+ export interface CreateSessionParams {
20
+ /** The user to mint a session for. */
21
+ user_id: string;
22
+ /** Optional impersonation actor — records who is acting as the user. */
23
+ actor?: {
24
+ sub: string;
25
+ };
26
+ }
27
+ /**
28
+ * A freshly-minted session. Unlike a listed {@link Session}, this carries the
29
+ * bearer `jwt` and `refresh_token` in-body — returned by design for headless use
30
+ * (the sk_ caller already holds full power; it saves the pk_ redeem/exchange
31
+ * hops). Store the refresh_token to keep the session alive.
32
+ */
33
+ export interface MintedSession {
34
+ object: 'session';
35
+ id: string;
36
+ user_id: string;
37
+ jwt: string;
38
+ refresh_token: string;
39
+ expires_in: number;
40
+ impersonated_by?: {
41
+ sub: string;
42
+ };
43
+ }
44
+ export declare function sessionsResource(request: RequestFn): {
45
+ /**
46
+ * `POST /v1/sessions` — mint a session for a user without the sign-in flow.
47
+ * Returns the bearer jwt + refresh token in-body. Refused for a banned user.
48
+ */
49
+ create(params: CreateSessionParams): Promise<MintedSession>;
50
+ /** `GET /v1/sessions?user_id=` — requires a user_id. */
51
+ list(params: ListSessionsParams): Promise<ListPage<Session>>;
52
+ get(id: string): Promise<Session>;
53
+ revoke(id: string): Promise<{
54
+ object: "session";
55
+ id: string;
56
+ status: "revoked";
57
+ }>;
58
+ };
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sessionsResource = sessionsResource;
4
+ const request_1 = require("./request");
5
+ function sessionsResource(request) {
6
+ return {
7
+ /**
8
+ * `POST /v1/sessions` — mint a session for a user without the sign-in flow.
9
+ * Returns the bearer jwt + refresh token in-body. Refused for a banned user.
10
+ */
11
+ create(params) {
12
+ return request({ method: 'POST', path: '/v1/sessions', body: { ...params } });
13
+ },
14
+ /** `GET /v1/sessions?user_id=` — requires a user_id. */
15
+ list(params) {
16
+ return request({ method: 'GET', path: '/v1/sessions', query: { ...params } });
17
+ },
18
+ get(id) {
19
+ return request({ method: 'GET', path: `/v1/sessions/${(0, request_1.enc)(id)}` });
20
+ },
21
+ revoke(id) {
22
+ return request({ method: 'POST', path: `/v1/sessions/${(0, request_1.enc)(id)}/revoke` });
23
+ },
24
+ };
25
+ }
26
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/client/sessions.ts"],"names":[],"mappings":";;AA4CA,4CAoBC;AAhED,uCAAgD;AA4ChD,SAAgB,gBAAgB,CAAC,OAAkB;IACjD,OAAO;QACL;;;WAGG;QACH,MAAM,CAAC,MAA2B;YAChC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,wDAAwD;QACxD,IAAI,CAAC,MAA0B;YAC7B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7E,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { RequestFn } from './request';
2
+ export interface SignInToken {
3
+ object: 'sign_in_token';
4
+ user_id: string;
5
+ token: string;
6
+ expires_in: number;
7
+ }
8
+ export interface CreateSignInTokenBody {
9
+ user_id: string;
10
+ /**
11
+ * Accepted by the wire type but currently ignored server-side — the token
12
+ * always lives 60 seconds. Kept so the shape matches the BAPI.
13
+ */
14
+ expires_in_seconds?: number;
15
+ }
16
+ export declare function signInTokensResource(request: RequestFn): {
17
+ create(body: CreateSignInTokenBody, idempotencyKey?: string): Promise<SignInToken>;
18
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signInTokensResource = signInTokensResource;
4
+ function signInTokensResource(request) {
5
+ return {
6
+ create(body, idempotencyKey) {
7
+ return request({ method: 'POST', path: '/v1/sign_in_tokens', body, idempotencyKey });
8
+ },
9
+ };
10
+ }
11
+ //# sourceMappingURL=sign-in-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign-in-tokens.js","sourceRoot":"","sources":["../../src/client/sign-in-tokens.ts"],"names":[],"mappings":";;AAkBA,oDAMC;AAND,SAAgB,oBAAoB,CAAC,OAAkB;IACrD,OAAO;QACL,MAAM,CAAC,IAA2B,EAAE,cAAuB;YACzD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACvF,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { type RequestFn } from './request';
2
+ import type { ListPage } from './types';
3
+ /** The transactional SMS a template drives. */
4
+ export type SmsTemplateName = 'verification_code' | 'mfa_code';
5
+ /**
6
+ * A template row: table-backed, keyed by `name`. The built-in `default` and the
7
+ * stored `body` override are both returned so a caller can show a diff. `body`
8
+ * is null when no override is stored.
9
+ */
10
+ export interface SmsTemplate {
11
+ object: 'sms_template';
12
+ name: SmsTemplateName;
13
+ default: string;
14
+ body: string | null;
15
+ enabled: boolean;
16
+ customised: boolean;
17
+ variables: readonly string[];
18
+ }
19
+ export interface CreateSmsTemplateBody {
20
+ name: string;
21
+ body: string;
22
+ enabled?: boolean;
23
+ }
24
+ /** A rendered body with a fixed SAMPLE code (`123456`), never a live OTP. */
25
+ export interface SmsTemplatePreview {
26
+ object: 'sms_template_preview';
27
+ name: SmsTemplateName;
28
+ body: string;
29
+ customised: boolean;
30
+ }
31
+ export declare function smsTemplatesResource(request: RequestFn): {
32
+ list(): Promise<ListPage<SmsTemplate>>;
33
+ /** Upsert an override by name. */
34
+ create(body: CreateSmsTemplateBody, idempotencyKey?: string): Promise<SmsTemplate>;
35
+ get(name: string): Promise<SmsTemplate>;
36
+ update(name: string, body: {
37
+ body?: string;
38
+ enabled?: boolean;
39
+ }): Promise<SmsTemplate>;
40
+ /** Revert to the built-in. */
41
+ delete(name: string): Promise<SmsTemplate>;
42
+ /** Render an unsaved draft (if a body is given) or the stored/built-in. */
43
+ preview(name: string, body?: {
44
+ body?: string;
45
+ }): Promise<SmsTemplatePreview>;
46
+ };
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.smsTemplatesResource = smsTemplatesResource;
4
+ const request_1 = require("./request");
5
+ function smsTemplatesResource(request) {
6
+ return {
7
+ list() {
8
+ return request({ method: 'GET', path: '/v1/sms_templates' });
9
+ },
10
+ /** Upsert an override by name. */
11
+ create(body, idempotencyKey) {
12
+ return request({ method: 'POST', path: '/v1/sms_templates', body, idempotencyKey });
13
+ },
14
+ get(name) {
15
+ return request({ method: 'GET', path: `/v1/sms_templates/${(0, request_1.enc)(name)}` });
16
+ },
17
+ update(name, body) {
18
+ return request({ method: 'PATCH', path: `/v1/sms_templates/${(0, request_1.enc)(name)}`, body });
19
+ },
20
+ /** Revert to the built-in. */
21
+ delete(name) {
22
+ return request({ method: 'DELETE', path: `/v1/sms_templates/${(0, request_1.enc)(name)}` });
23
+ },
24
+ /** Render an unsaved draft (if a body is given) or the stored/built-in. */
25
+ preview(name, body = {}) {
26
+ return request({ method: 'POST', path: `/v1/sms_templates/${(0, request_1.enc)(name)}/preview`, body });
27
+ },
28
+ };
29
+ }
30
+ //# sourceMappingURL=sms-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sms-templates.js","sourceRoot":"","sources":["../../src/client/sms-templates.ts"],"names":[],"mappings":";;AAmCA,oDAwBC;AA3DD,uCAAgD;AAmChD,SAAgB,oBAAoB,CAAC,OAAkB;IACrD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC/D,CAAC;QACD,kCAAkC;QAClC,MAAM,CAAC,IAA2B,EAAE,cAAuB;YACzD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,GAAG,CAAC,IAAY;YACd,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,IAAA,aAAG,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,MAAM,CAAC,IAAY,EAAE,IAA0C;YAC7D,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,IAAA,aAAG,EAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,8BAA8B;QAC9B,MAAM,CAAC,IAAY;YACjB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,qBAAqB,IAAA,aAAG,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,2EAA2E;QAC3E,OAAO,CAAC,IAAY,EAAE,OAA0B,EAAE;YAChD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,IAAA,aAAG,EAAC,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3F,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { type RequestFn } from './request';
2
+ import type { ListPage } from './types';
3
+ export interface ClaimRoleMapping {
4
+ claim: string;
5
+ value: string;
6
+ /** camelCase on the wire, unlike the surrounding snake_case fields. */
7
+ roleKey: string;
8
+ }
9
+ export interface SsoConnection {
10
+ object: 'sso_connection';
11
+ id: string;
12
+ organization_id: string | null;
13
+ type: string;
14
+ status: string;
15
+ oidc_issuer: string | null;
16
+ oidc_client_id: string | null;
17
+ has_secret: boolean;
18
+ saml_idp_entity_id: string | null;
19
+ saml_idp_sso_url: string | null;
20
+ saml_sp_entity_id: string | null;
21
+ has_saml_certificate: boolean;
22
+ saml_allow_idp_initiated: boolean;
23
+ saml_sign_authn_requests: boolean;
24
+ saml_want_response_signed: boolean;
25
+ has_discourse_secret: boolean;
26
+ discourse_provider_url: string | null;
27
+ allowed_domains: string[];
28
+ claim_role_mappings: ClaimRoleMapping[];
29
+ default_role_id: string | null;
30
+ created_at: number;
31
+ updated_at: number;
32
+ }
33
+ export interface SamlMetadata {
34
+ object: 'sso_saml_metadata';
35
+ sp_entity_id: string;
36
+ acs_url: string;
37
+ /** The SP EntityDescriptor XML, carried as a string inside this JSON envelope. */
38
+ metadata_xml: string;
39
+ }
40
+ export interface CreateSsoConnectionBody {
41
+ organization_id?: string | null;
42
+ type?: 'oidc' | 'saml' | 'discourse' | 'discourse_consumer';
43
+ status?: 'draft' | 'active' | 'disabled';
44
+ oidc_issuer?: string;
45
+ oidc_client_id?: string;
46
+ /** Write-only; stored encrypted, never returned. */
47
+ oidc_client_secret?: string;
48
+ saml_idp_entity_id?: string;
49
+ saml_idp_sso_url?: string;
50
+ /** Write-only; only `has_saml_certificate` is ever returned. */
51
+ saml_idp_certificate?: string;
52
+ saml_sp_entity_id?: string;
53
+ saml_allow_idp_initiated?: boolean;
54
+ saml_sign_authn_requests?: boolean;
55
+ saml_want_response_signed?: boolean;
56
+ discourse_secret?: string;
57
+ discourse_provider_url?: string;
58
+ allowed_domains?: string[];
59
+ claim_role_mappings?: ClaimRoleMapping[];
60
+ default_role_id?: string | null;
61
+ }
62
+ /** PATCH accepts everything create does except `type`, which is immutable. */
63
+ export type UpdateSsoConnectionBody = Omit<CreateSsoConnectionBody, 'type'>;
64
+ export declare function ssoConnectionsResource(request: RequestFn): {
65
+ list(): Promise<ListPage<SsoConnection>>;
66
+ get(id: string): Promise<SsoConnection>;
67
+ create(body: CreateSsoConnectionBody, idempotencyKey?: string): Promise<SsoConnection>;
68
+ update(id: string, body: UpdateSsoConnectionBody): Promise<SsoConnection>;
69
+ delete(id: string): Promise<{
70
+ object: "sso_connection";
71
+ id: string;
72
+ deleted: true;
73
+ }>;
74
+ /** SP SAML metadata for a connection (JSON envelope carrying the XML). */
75
+ samlMetadata(id: string): Promise<SamlMetadata>;
76
+ };
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ssoConnectionsResource = ssoConnectionsResource;
4
+ const request_1 = require("./request");
5
+ function ssoConnectionsResource(request) {
6
+ return {
7
+ list() {
8
+ return request({ method: 'GET', path: '/v1/sso_connections' });
9
+ },
10
+ get(id) {
11
+ return request({ method: 'GET', path: `/v1/sso_connections/${(0, request_1.enc)(id)}` });
12
+ },
13
+ create(body, idempotencyKey) {
14
+ return request({ method: 'POST', path: '/v1/sso_connections', body, idempotencyKey });
15
+ },
16
+ update(id, body) {
17
+ return request({ method: 'PATCH', path: `/v1/sso_connections/${(0, request_1.enc)(id)}`, body });
18
+ },
19
+ delete(id) {
20
+ return request({ method: 'DELETE', path: `/v1/sso_connections/${(0, request_1.enc)(id)}` });
21
+ },
22
+ /** SP SAML metadata for a connection (JSON envelope carrying the XML). */
23
+ samlMetadata(id) {
24
+ return request({ method: 'GET', path: `/v1/sso_connections/${(0, request_1.enc)(id)}/saml_metadata` });
25
+ },
26
+ };
27
+ }
28
+ //# sourceMappingURL=sso-connections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-connections.js","sourceRoot":"","sources":["../../src/client/sso-connections.ts"],"names":[],"mappings":";;AAqEA,wDAsBC;AA3FD,uCAAgD;AAqEhD,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,IAA6B,EAAE,cAAuB;YAC3D,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,IAA6B;YAC9C,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,0EAA0E;QAC1E,YAAY,CAAC,EAAU;YACrB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,uBAAuB,IAAA,aAAG,EAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC1F,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { type RequestFn } from './request';
2
+ import type { ListPage } from './types';
3
+ /**
4
+ * A self-service SSO onboarding profile — the WorkOS Admin Portal / Auth0
5
+ * self-service-profiles model. It fixes which protocols an end-customer may
6
+ * configure and either binds an org or promises to name one at ticket issue.
7
+ */
8
+ export interface SsoOnboardingProfile {
9
+ object: 'sso_onboarding_profile';
10
+ id: string;
11
+ name: string;
12
+ allowed_connection_types: string[];
13
+ /** Set = every ticket targets this org; null = the ticket names its org. */
14
+ organization_id: string | null;
15
+ company_name: string | null;
16
+ allow_scim: boolean;
17
+ created_at: number;
18
+ updated_at: number;
19
+ }
20
+ /**
21
+ * A one-time, expiring ticket for a specific end-customer org. Its opaque token
22
+ * (and the hosted setup URL carrying it) are revealed exactly once — see
23
+ * {@link IssuedSsoOnboardingTicket}.
24
+ */
25
+ export interface SsoOnboardingTicket {
26
+ object: 'sso_onboarding_ticket';
27
+ id: string;
28
+ profile_id: string;
29
+ organization_id: string;
30
+ sso_connection_id: string | null;
31
+ status: string;
32
+ expires_at: number;
33
+ created_at: number;
34
+ completed_at: number | null;
35
+ }
36
+ /** The create response: the ticket plus the once-only token and hosted URL. */
37
+ export interface IssuedSsoOnboardingTicket extends SsoOnboardingTicket {
38
+ /** Revealed exactly once; only its hash is stored. */
39
+ token: string;
40
+ /** The hosted URL the end-customer's IT admin opens (no dashboard account). */
41
+ url: string;
42
+ expires_in: number;
43
+ }
44
+ export interface CreateSsoOnboardingProfileBody {
45
+ name: string;
46
+ /** Defaults to both `oidc` and `saml`. */
47
+ allowed_connection_types?: Array<'oidc' | 'saml'>;
48
+ /** Bind the profile to an org in this instance; omit for a per-ticket org. */
49
+ organization_id?: string | null;
50
+ company_name?: string | null;
51
+ allow_scim?: boolean;
52
+ }
53
+ export interface CreateSsoOnboardingTicketBody {
54
+ /** Required for an unbound profile; must match (or be omitted) for a bound one. */
55
+ organization_id?: string | null;
56
+ /** Clamped to a 5-minute…30-day band; defaults to 3 days. */
57
+ expires_in_seconds?: number;
58
+ }
59
+ export declare function ssoOnboardingResource(request: RequestFn): {
60
+ list(): Promise<ListPage<SsoOnboardingProfile>>;
61
+ get(id: string): Promise<SsoOnboardingProfile>;
62
+ create(body: CreateSsoOnboardingProfileBody, idempotencyKey?: string): Promise<SsoOnboardingProfile>;
63
+ delete(id: string): Promise<{
64
+ object: "sso_onboarding_profile";
65
+ id: string;
66
+ deleted: true;
67
+ }>;
68
+ /** Issue a one-time ticket for a profile. The token is returned once, here. */
69
+ createTicket(profileId: string, body?: CreateSsoOnboardingTicketBody, idempotencyKey?: string): Promise<IssuedSsoOnboardingTicket>;
70
+ /** Kill a still-live ticket. 404 once it is used, expired, or already revoked. */
71
+ revokeTicket(ticketId: string): Promise<{
72
+ object: "sso_onboarding_ticket";
73
+ id: string;
74
+ revoked: true;
75
+ }>;
76
+ };
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ssoOnboardingResource = ssoOnboardingResource;
4
+ const request_1 = require("./request");
5
+ function ssoOnboardingResource(request) {
6
+ return {
7
+ list() {
8
+ return request({ method: 'GET', path: '/v1/sso_onboarding_profiles' });
9
+ },
10
+ get(id) {
11
+ return request({ method: 'GET', path: `/v1/sso_onboarding_profiles/${(0, request_1.enc)(id)}` });
12
+ },
13
+ create(body, idempotencyKey) {
14
+ return request({
15
+ method: 'POST',
16
+ path: '/v1/sso_onboarding_profiles',
17
+ body,
18
+ idempotencyKey,
19
+ });
20
+ },
21
+ delete(id) {
22
+ return request({ method: 'DELETE', path: `/v1/sso_onboarding_profiles/${(0, request_1.enc)(id)}` });
23
+ },
24
+ /** Issue a one-time ticket for a profile. The token is returned once, here. */
25
+ createTicket(profileId, body = {}, idempotencyKey) {
26
+ return request({
27
+ method: 'POST',
28
+ path: `/v1/sso_onboarding_profiles/${(0, request_1.enc)(profileId)}/tickets`,
29
+ body,
30
+ idempotencyKey,
31
+ });
32
+ },
33
+ /** Kill a still-live ticket. 404 once it is used, expired, or already revoked. */
34
+ revokeTicket(ticketId) {
35
+ return request({
36
+ method: 'POST',
37
+ path: `/v1/sso_onboarding_tickets/${(0, request_1.enc)(ticketId)}/revoke`,
38
+ });
39
+ },
40
+ };
41
+ }
42
+ //# sourceMappingURL=sso-onboarding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sso-onboarding.js","sourceRoot":"","sources":["../../src/client/sso-onboarding.ts"],"names":[],"mappings":";;AAgEA,sDA6CC;AA7GD,uCAAgD;AAgEhD,SAAgB,qBAAqB,CAAC,OAAkB;IACtD,OAAO;QACL,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,+BAA+B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,CACJ,IAAoC,EACpC,cAAuB;YAEvB,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,6BAA6B;gBACnC,IAAI;gBACJ,cAAc;aACf,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,+BAA+B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,+EAA+E;QAC/E,YAAY,CACV,SAAiB,EACjB,OAAsC,EAAE,EACxC,cAAuB;YAEvB,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,+BAA+B,IAAA,aAAG,EAAC,SAAS,CAAC,UAAU;gBAC7D,IAAI;gBACJ,cAAc;aACf,CAAC,CAAC;QACL,CAAC;QACD,kFAAkF;QAClF,YAAY,CACV,QAAgB;YAEhB,OAAO,OAAO,CAAC;gBACb,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,8BAA8B,IAAA,aAAG,EAAC,QAAQ,CAAC,SAAS;aAC3D,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,37 @@
1
+ import type { RequestFn } from './request';
2
+ /**
3
+ * §7.7 authoritative token verification. Backend SDKs verify session JWTs
4
+ * locally against JWKS — fast, offline, and correct within the 60-second token
5
+ * lifetime, but blind to a revocation. This endpoint is for the requests where
6
+ * "signed out a moment ago" has to mean now: it checks the revocation set and,
7
+ * when the cache cannot answer, falls through to the database.
8
+ *
9
+ * One failure is reported as `verified: false` with a coarse `reason`; telling a
10
+ * caller which check failed would help a forger more than a developer.
11
+ */
12
+ export interface VerifyTokenBody {
13
+ token: string;
14
+ /** Expected `azp` values, if the token carries an authorized-party claim. */
15
+ authorized_parties?: string[];
16
+ }
17
+ export interface TokenVerificationFailure {
18
+ object: 'token_verification';
19
+ verified: false;
20
+ reason: 'invalid' | 'revoked';
21
+ }
22
+ export interface TokenVerificationSuccess {
23
+ object: 'token_verification';
24
+ verified: true;
25
+ user_id: string;
26
+ session_id: string;
27
+ organization_id: string | null;
28
+ organization_role: string | null;
29
+ organization_permissions: string[];
30
+ mfa: boolean;
31
+ /** True when the cache could not answer and the database was consulted. */
32
+ checked_authoritatively: boolean;
33
+ }
34
+ export type TokenVerification = TokenVerificationSuccess | TokenVerificationFailure;
35
+ export declare function tokensResource(request: RequestFn): {
36
+ verify(body: VerifyTokenBody): Promise<TokenVerification>;
37
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tokensResource = tokensResource;
4
+ function tokensResource(request) {
5
+ return {
6
+ verify(body) {
7
+ return request({ method: 'POST', path: '/v1/tokens/verify', body });
8
+ },
9
+ };
10
+ }
11
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/client/tokens.ts"],"names":[],"mappings":";;AAwCA,wCAMC;AAND,SAAgB,cAAc,CAAC,OAAkB;IAC/C,OAAO;QACL,MAAM,CAAC,IAAqB;YAC1B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Shapes shared across resource namespaces.
3
+ *
4
+ * The wire is snake_case JSON; these types mirror it exactly (no camelCase
5
+ * translation), because the SDK's job is to type the BAPI, not to invent a
6
+ * second dialect a reader would then have to reconcile against the docs.
7
+ */
8
+ /** A free-form metadata bag. The BAPI stores arbitrary JSON objects here. */
9
+ export type Metadata = Record<string, unknown>;
10
+ /**
11
+ * The `GET /v1/users`-style cursor page: no total, a boolean `has_more`, and an
12
+ * opaque `next_cursor` to pass back as `starting_after`.
13
+ */
14
+ export interface CursorPage<T> {
15
+ data: T[];
16
+ has_more: boolean;
17
+ next_cursor: string | null;
18
+ }
19
+ /** The `{ object: 'list', data, has_more }` envelope some list routes use. */
20
+ export interface ListPage<T> {
21
+ object: 'list';
22
+ data: T[];
23
+ has_more?: boolean;
24
+ }
25
+ /** A bare `{ data }` list with no pagination metadata. */
26
+ export interface DataList<T> {
27
+ data: T[];
28
+ }
29
+ /** Common cursor-pagination params. */
30
+ export interface CursorParams {
31
+ /** Page size. Server clamps to its own maximum. */
32
+ limit?: number;
33
+ /** Opaque cursor: the id after which to continue (from `next_cursor`). */
34
+ starting_after?: string;
35
+ }
36
+ /** A minimal deletion acknowledgement several mutation routes return. */
37
+ export interface DeletedObject {
38
+ object: string;
39
+ id: string;
40
+ deleted: true;
41
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ /**
3
+ * Shapes shared across resource namespaces.
4
+ *
5
+ * The wire is snake_case JSON; these types mirror it exactly (no camelCase
6
+ * translation), because the SDK's job is to type the BAPI, not to invent a
7
+ * second dialect a reader would then have to reconcile against the docs.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG"}