@atlasauth/backend 0.23.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/auth0-session.d.ts +23 -0
  3. package/dist/auth0-session.js +80 -0
  4. package/dist/auth0-session.js.map +1 -0
  5. package/dist/better-auth.d.ts +4 -8
  6. package/dist/better-auth.js +42 -150
  7. package/dist/better-auth.js.map +1 -1
  8. package/dist/client/abac.d.ts +132 -0
  9. package/dist/client/abac.js +48 -0
  10. package/dist/client/abac.js.map +1 -0
  11. package/dist/client/access-policies.d.ts +100 -0
  12. package/dist/client/access-policies.js +29 -0
  13. package/dist/client/access-policies.js.map +1 -0
  14. package/dist/client/action-gallery.d.ts +1 -1
  15. package/dist/client/action-gallery.js.map +1 -1
  16. package/dist/client/actions.d.ts +129 -6
  17. package/dist/client/actions.js +4 -0
  18. package/dist/client/actions.js.map +1 -1
  19. package/dist/client/analytics-reports.d.ts +215 -0
  20. package/dist/client/analytics-reports.js +56 -0
  21. package/dist/client/analytics-reports.js.map +1 -0
  22. package/dist/client/app-catalog.d.ts +74 -0
  23. package/dist/client/app-catalog.js +30 -0
  24. package/dist/client/app-catalog.js.map +1 -0
  25. package/dist/client/attack-protection.d.ts +10 -0
  26. package/dist/client/attack-protection.js +8 -0
  27. package/dist/client/attack-protection.js.map +1 -1
  28. package/dist/client/audit-events.d.ts +71 -0
  29. package/dist/client/audit-events.js +28 -0
  30. package/dist/client/audit-events.js.map +1 -1
  31. package/dist/client/credentials.d.ts +8 -0
  32. package/dist/client/credentials.js.map +1 -1
  33. package/dist/client/delegated-ui-proxy.d.ts +25 -0
  34. package/dist/client/delegated-ui-proxy.js +46 -0
  35. package/dist/client/delegated-ui-proxy.js.map +1 -0
  36. package/dist/client/devices.d.ts +44 -0
  37. package/dist/client/devices.js +26 -0
  38. package/dist/client/devices.js.map +1 -0
  39. package/dist/client/email-templates.d.ts +1 -1
  40. package/dist/client/email-templates.js.map +1 -1
  41. package/dist/client/flags.d.ts +101 -0
  42. package/dist/client/flags.js +104 -0
  43. package/dist/client/flags.js.map +1 -0
  44. package/dist/client/groups.d.ts +146 -0
  45. package/dist/client/groups.js +67 -0
  46. package/dist/client/groups.js.map +1 -0
  47. package/dist/client/identity-verification.d.ts +62 -0
  48. package/dist/client/identity-verification.js +39 -0
  49. package/dist/client/identity-verification.js.map +1 -0
  50. package/dist/client/index.d.ts +997 -2
  51. package/dist/client/index.js +77 -0
  52. package/dist/client/index.js.map +1 -1
  53. package/dist/client/journeys.d.ts +108 -0
  54. package/dist/client/journeys.js +35 -0
  55. package/dist/client/journeys.js.map +1 -0
  56. package/dist/client/log-streams.d.ts +1 -1
  57. package/dist/client/marketing.d.ts +67 -0
  58. package/dist/client/marketing.js +26 -0
  59. package/dist/client/marketing.js.map +1 -0
  60. package/dist/client/mcp-gateways.d.ts +54 -0
  61. package/dist/client/mcp-gateways.js +25 -0
  62. package/dist/client/mcp-gateways.js.map +1 -0
  63. package/dist/client/messaging.d.ts +14 -3
  64. package/dist/client/messaging.js.map +1 -1
  65. package/dist/client/mfa-factors.d.ts +120 -0
  66. package/dist/client/mfa-factors.js +73 -0
  67. package/dist/client/mfa-factors.js.map +1 -0
  68. package/dist/client/migrations.d.ts +286 -0
  69. package/dist/client/migrations.js +103 -0
  70. package/dist/client/migrations.js.map +1 -0
  71. package/dist/client/network-acls.d.ts +6 -1
  72. package/dist/client/network-acls.js.map +1 -1
  73. package/dist/client/network-zones.d.ts +56 -0
  74. package/dist/client/network-zones.js +29 -0
  75. package/dist/client/network-zones.js.map +1 -0
  76. package/dist/client/notifications.d.ts +1 -1
  77. package/dist/client/notifications.js.map +1 -1
  78. package/dist/client/oauth-clients.d.ts +183 -3
  79. package/dist/client/oauth-clients.js +64 -0
  80. package/dist/client/oauth-clients.js.map +1 -1
  81. package/dist/client/org-role-grants.d.ts +57 -0
  82. package/dist/client/org-role-grants.js +40 -0
  83. package/dist/client/org-role-grants.js.map +1 -0
  84. package/dist/client/organizations.d.ts +52 -0
  85. package/dist/client/organizations.js +44 -0
  86. package/dist/client/organizations.js.map +1 -1
  87. package/dist/client/page-templates.d.ts +78 -0
  88. package/dist/client/page-templates.js +31 -0
  89. package/dist/client/page-templates.js.map +1 -0
  90. package/dist/client/passkey-api.d.ts +73 -0
  91. package/dist/client/passkey-api.js +34 -0
  92. package/dist/client/passkey-api.js.map +1 -0
  93. package/dist/client/resources.d.ts +149 -0
  94. package/dist/client/resources.js +73 -0
  95. package/dist/client/resources.js.map +1 -0
  96. package/dist/client/risk-based-mfa.d.ts +147 -0
  97. package/dist/client/risk-based-mfa.js +30 -0
  98. package/dist/client/risk-based-mfa.js.map +1 -1
  99. package/dist/client/roles.d.ts +4 -0
  100. package/dist/client/roles.js.map +1 -1
  101. package/dist/client/service-connectors.d.ts +83 -0
  102. package/dist/client/service-connectors.js +33 -0
  103. package/dist/client/service-connectors.js.map +1 -0
  104. package/dist/client/ssf.d.ts +111 -0
  105. package/dist/client/ssf.js +49 -0
  106. package/dist/client/ssf.js.map +1 -0
  107. package/dist/client/sso-onboarding.d.ts +6 -0
  108. package/dist/client/sso-onboarding.js.map +1 -1
  109. package/dist/client/users.d.ts +302 -0
  110. package/dist/client/users.js +125 -0
  111. package/dist/client/users.js.map +1 -1
  112. package/dist/client/vault.d.ts +85 -0
  113. package/dist/client/vault.js +50 -0
  114. package/dist/client/vault.js.map +1 -0
  115. package/dist/client/vc.d.ts +128 -0
  116. package/dist/client/vc.js +43 -0
  117. package/dist/client/vc.js.map +1 -0
  118. package/dist/client/webhooks.d.ts +31 -2
  119. package/dist/client/webhooks.js.map +1 -1
  120. package/dist/client/workflows.d.ts +131 -0
  121. package/dist/client/workflows.js +36 -0
  122. package/dist/client/workflows.js.map +1 -0
  123. package/dist/framework-bridge.d.ts +98 -0
  124. package/dist/framework-bridge.js +264 -0
  125. package/dist/framework-bridge.js.map +1 -0
  126. package/dist/framework-sessions.d.ts +147 -0
  127. package/dist/framework-sessions.js +544 -0
  128. package/dist/framework-sessions.js.map +1 -0
  129. package/dist/index.d.ts +11 -1
  130. package/dist/index.js +19 -2
  131. package/dist/index.js.map +1 -1
  132. package/dist/legacy-issuer-presets.d.ts +85 -0
  133. package/dist/legacy-issuer-presets.js +165 -0
  134. package/dist/legacy-issuer-presets.js.map +1 -0
  135. package/dist/legacy-issuers.d.ts +16 -2
  136. package/dist/legacy-issuers.js +16 -1
  137. package/dist/legacy-issuers.js.map +1 -1
  138. package/dist/legacy-verify.d.ts +103 -0
  139. package/dist/legacy-verify.js +244 -0
  140. package/dist/legacy-verify.js.map +1 -0
  141. package/dist/magic-did.d.ts +5 -0
  142. package/dist/magic-did.js +49 -0
  143. package/dist/magic-did.js.map +1 -0
  144. package/dist/migration-bridge.d.ts +162 -0
  145. package/dist/migration-bridge.js +354 -0
  146. package/dist/migration-bridge.js.map +1 -0
  147. package/dist/migration-presets-g3.d.ts +2 -0
  148. package/dist/migration-presets-g3.js +254 -0
  149. package/dist/migration-presets-g3.js.map +1 -0
  150. package/dist/migration-presets-g4/authentik.d.ts +14 -0
  151. package/dist/migration-presets-g4/authentik.js +37 -0
  152. package/dist/migration-presets-g4/authentik.js.map +1 -0
  153. package/dist/migration-presets-g4/fusionauth.d.ts +2 -0
  154. package/dist/migration-presets-g4/fusionauth.js +52 -0
  155. package/dist/migration-presets-g4/fusionauth.js.map +1 -0
  156. package/dist/migration-presets-g4/hanko.d.ts +12 -0
  157. package/dist/migration-presets-g4/hanko.js +46 -0
  158. package/dist/migration-presets-g4/hanko.js.map +1 -0
  159. package/dist/migration-presets-g4/keycloak.d.ts +16 -0
  160. package/dist/migration-presets-g4/keycloak.js +37 -0
  161. package/dist/migration-presets-g4/keycloak.js.map +1 -0
  162. package/dist/migration-presets-g4/logto.d.ts +12 -0
  163. package/dist/migration-presets-g4/logto.js +35 -0
  164. package/dist/migration-presets-g4/logto.js.map +1 -0
  165. package/dist/migration-presets-g4/ory.d.ts +2 -0
  166. package/dist/migration-presets-g4/ory.js +67 -0
  167. package/dist/migration-presets-g4/ory.js.map +1 -0
  168. package/dist/migration-presets-g4/supertokens.d.ts +13 -0
  169. package/dist/migration-presets-g4/supertokens.js +35 -0
  170. package/dist/migration-presets-g4/supertokens.js.map +1 -0
  171. package/dist/migration-presets-g4/zitadel.d.ts +2 -0
  172. package/dist/migration-presets-g4/zitadel.js +36 -0
  173. package/dist/migration-presets-g4/zitadel.js.map +1 -0
  174. package/dist/migration-presets-g4.d.ts +10 -0
  175. package/dist/migration-presets-g4.js +30 -0
  176. package/dist/migration-presets-g4.js.map +1 -0
  177. package/dist/migration-presets.d.ts +156 -0
  178. package/dist/migration-presets.js +536 -0
  179. package/dist/migration-presets.js.map +1 -0
  180. package/dist/request-auth.d.ts +32 -0
  181. package/dist/request-auth.js +72 -0
  182. package/dist/request-auth.js.map +1 -0
  183. package/dist/verify.d.ts +2 -0
  184. package/dist/verify.js.map +1 -1
  185. package/dist/workos-session.d.ts +30 -0
  186. package/dist/workos-session.js +123 -0
  187. package/dist/workos-session.js.map +1 -0
  188. package/package.json +1 -1
@@ -3,6 +3,14 @@ import { type RequestFn } from './request';
3
3
  export type RiskLevel = 'low' | 'medium' | 'high';
4
4
  /** What to do at high risk when the user has NO enrolled factor. */
5
5
  export type OnHighRiskNoFactor = 'allow' | 'block' | 'require_enroll';
6
+ /** `audit` scores and records every sign-in but never changes the outcome. */
7
+ export type RiskMode = 'enforce' | 'audit';
8
+ /** What a risk level does; `default` keeps the step-up threshold behaviour. */
9
+ export type RiskLevelAction = 'default' | 'allow' | 'notify' | 'mfa' | 'block';
10
+ export interface RiskLevelActions {
11
+ medium: RiskLevelAction;
12
+ high: RiskLevelAction;
13
+ }
6
14
  /** Per-signal score weights that feed the risk total. */
7
15
  export interface RiskWeights {
8
16
  newDevice: number;
@@ -34,6 +42,78 @@ export interface RiskBasedMfa {
34
42
  on_high_risk_no_factor: OnHighRiskNoFactor;
35
43
  weights: RiskWeights;
36
44
  signals: RiskSignalToggles;
45
+ mode: RiskMode;
46
+ level_actions: RiskLevelActions;
47
+ reputation: RiskReputation;
48
+ fraud: FraudConfig;
49
+ /** Per-user baseline: unusual sign-in hour or never-seen country adds `weight` points each. */
50
+ baseline: {
51
+ enabled: boolean;
52
+ weight: number;
53
+ };
54
+ /** Re-evaluate a session when it refreshes from a different network. */
55
+ mid_session: {
56
+ enabled: boolean;
57
+ action: 'revoke' | 'notify' | 'audit';
58
+ };
59
+ }
60
+ export type FraudAction = 'allow' | 'challenge' | 'block';
61
+ export interface FraudRule {
62
+ id: string;
63
+ name: string;
64
+ enabled: boolean;
65
+ action: FraudAction;
66
+ /** Reason code returned when the rule matches. */
67
+ reason: string;
68
+ /** All conditions must hold. */
69
+ conditions: Array<{
70
+ field: 'country' | 'asn' | 'datacenter' | 'anonymizer' | 'headless' | 'automation' | 'client_class' | 'bot_score' | 'email_disposable' | 'ip_velocity' | 'device_velocity' | 'email_velocity';
71
+ op: 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'nin';
72
+ value: string | number | boolean | Array<string | number>;
73
+ }>;
74
+ }
75
+ export interface FraudConfig {
76
+ /** Two-letter country codes that are always blocked. */
77
+ sanctioned_countries: string[];
78
+ rules: FraudRule[];
79
+ /** Cap on lookups per device per hour; adaptive halves it for bot-like, datacenter or anonymized clients. */
80
+ device_rate_limit?: {
81
+ enabled: boolean;
82
+ per_hour: number;
83
+ adaptive: boolean;
84
+ };
85
+ }
86
+ export interface FraudLookupBody {
87
+ ip: string;
88
+ user_agent?: string;
89
+ /** The stable id from the JS SDK. */
90
+ device_id?: string;
91
+ email?: string;
92
+ /** A user of this instance, for user_age_days / user_mfa_enabled / user_banned rules. */
93
+ user_id?: string;
94
+ /** The organization the action is for, for org_id rules. */
95
+ org_id?: string;
96
+ /** Device features reported by the SDK (see the telemetry beacon). */
97
+ device?: Record<string, unknown>;
98
+ }
99
+ export interface FraudLookup {
100
+ object: 'fraud_lookup';
101
+ verdict: FraudAction;
102
+ reasons: string[];
103
+ matched_rules: string[];
104
+ device_id: string | null;
105
+ signals: Record<string, string | number | boolean | null>;
106
+ }
107
+ /** External IP-reputation / email-risk feeds (bring your own provider key). */
108
+ export interface RiskReputation {
109
+ provider: 'none' | 'ipqs' | 'spur' | 'minfraud';
110
+ /** Score points added when the IP is flagged. */
111
+ ip_weight: number;
112
+ /** Provider fraud score (1-100) at or above which the IP is flagged. */
113
+ min_score: number;
114
+ flag_anonymizers: boolean;
115
+ email_checks: boolean;
116
+ email_weight: number;
37
117
  }
38
118
  export interface UpdateRiskBasedMfaBody {
39
119
  enabled?: boolean;
@@ -41,6 +121,40 @@ export interface UpdateRiskBasedMfaBody {
41
121
  on_high_risk_no_factor?: OnHighRiskNoFactor;
42
122
  weights?: Partial<RiskWeights>;
43
123
  signals?: Partial<RiskSignalToggles>;
124
+ mode?: RiskMode;
125
+ level_actions?: Partial<RiskLevelActions>;
126
+ reputation?: Partial<RiskReputation>;
127
+ fraud?: Partial<FraudConfig>;
128
+ baseline?: Partial<RiskBasedMfa['baseline']>;
129
+ mid_session?: Partial<RiskBasedMfa['mid_session']>;
130
+ }
131
+ /** One risk-scored sign-in on the audit / shadow-mode timeline. */
132
+ export interface RiskEvent {
133
+ object: 'risk_event';
134
+ id: string;
135
+ user_id: string;
136
+ level: RiskLevel;
137
+ score: number;
138
+ /** Names of the signals that fired. */
139
+ signals: string[];
140
+ /** The action decided; in audit mode, what WOULD have happened. */
141
+ action: string;
142
+ mode: RiskMode;
143
+ ip: string | null;
144
+ feedback: 'legit' | 'fraud' | null;
145
+ feedback_at: string | null;
146
+ created_at: string;
147
+ }
148
+ export interface RiskEventMetrics {
149
+ object: 'risk_event_metrics';
150
+ days: number;
151
+ total: number;
152
+ buckets: Array<{
153
+ level: string;
154
+ action: string;
155
+ mode: string;
156
+ count: number;
157
+ }>;
44
158
  }
45
159
  /**
46
160
  * Read and tune the instance's adaptive-MFA engine — when a second factor is
@@ -51,4 +165,37 @@ export declare function riskBasedMfaResource(request: RequestFn): {
51
165
  get(): Promise<RiskBasedMfa>;
52
166
  /** Change any subset of the config; omitted fields are left unchanged. */
53
167
  update(body: UpdateRiskBasedMfaBody): Promise<RiskBasedMfa>;
168
+ /** Fraud decision (allow / challenge / block with reason codes) for a sign-up, sign-in or checkout. */
169
+ fraudLookup(body: FraudLookupBody): Promise<FraudLookup>;
170
+ /** Store the reputation provider's API key (write-only; minfraud: "<account id>:<license key>"). */
171
+ setReputationSecret(secret: string, provider?: "ipqs" | "spur" | "minfraud"): Promise<{
172
+ object: "risk_reputation_secret";
173
+ provider: string;
174
+ set: true;
175
+ }>;
176
+ /** Remove a stored reputation provider key (default: the configured provider). */
177
+ removeReputationSecret(provider?: "ipqs" | "spur" | "minfraud"): Promise<{
178
+ object: "risk_reputation_secret";
179
+ provider: string;
180
+ deleted: true;
181
+ }>;
182
+ };
183
+ /** The risk-event timeline, metrics and feedback. */
184
+ export declare function riskEventsResource(request: RequestFn): {
185
+ /** Newest first. Page with `before` (the created_at of the last row). */
186
+ list(query?: {
187
+ user_id?: string;
188
+ level?: RiskLevel;
189
+ limit?: number;
190
+ before?: string;
191
+ }): Promise<{
192
+ object: "list";
193
+ data: RiskEvent[];
194
+ }>;
195
+ /** Counts per level / action / mode over the last `days`. */
196
+ metrics(query?: {
197
+ days?: number;
198
+ }): Promise<RiskEventMetrics>;
199
+ /** Mark a scored sign-in `legit` or `fraud`; the fired signals' weights move accordingly. */
200
+ feedback(id: string, verdict: "legit" | "fraud"): Promise<RiskEvent>;
54
201
  };
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.riskBasedMfaResource = riskBasedMfaResource;
4
+ exports.riskEventsResource = riskEventsResource;
4
5
  /**
5
6
  * Read and tune the instance's adaptive-MFA engine — when a second factor is
6
7
  * demanded, and how each risk signal is weighted.
@@ -15,6 +16,35 @@ function riskBasedMfaResource(request) {
15
16
  update(body) {
16
17
  return request({ method: 'PATCH', path: '/v1/risk_based_mfa', body });
17
18
  },
19
+ /** Fraud decision (allow / challenge / block with reason codes) for a sign-up, sign-in or checkout. */
20
+ fraudLookup(body) {
21
+ return request({ method: 'POST', path: '/v1/fraud/lookup', body });
22
+ },
23
+ /** Store the reputation provider's API key (write-only; minfraud: "<account id>:<license key>"). */
24
+ setReputationSecret(secret, provider) {
25
+ return request({ method: 'PUT', path: '/v1/risk_based_mfa/reputation_secret', body: { secret, provider } });
26
+ },
27
+ /** Remove a stored reputation provider key (default: the configured provider). */
28
+ removeReputationSecret(provider) {
29
+ return request({ method: 'DELETE', path: '/v1/risk_based_mfa/reputation_secret', query: { provider } });
30
+ },
31
+ };
32
+ }
33
+ /** The risk-event timeline, metrics and feedback. */
34
+ function riskEventsResource(request) {
35
+ return {
36
+ /** Newest first. Page with `before` (the created_at of the last row). */
37
+ list(query = {}) {
38
+ return request({ method: 'GET', path: '/v1/risk_events', query });
39
+ },
40
+ /** Counts per level / action / mode over the last `days`. */
41
+ metrics(query = {}) {
42
+ return request({ method: 'GET', path: '/v1/risk_events/metrics', query });
43
+ },
44
+ /** Mark a scored sign-in `legit` or `fraud`; the fired signals' weights move accordingly. */
45
+ feedback(id, verdict) {
46
+ return request({ method: 'POST', path: `/v1/risk_events/${encodeURIComponent(id)}/feedback`, body: { verdict } });
47
+ },
18
48
  };
19
49
  }
20
50
  //# sourceMappingURL=risk-based-mfa.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"risk-based-mfa.js","sourceRoot":"","sources":["../../src/client/risk-based-mfa.ts"],"names":[],"mappings":";;AAuDA,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"}
1
+ {"version":3,"file":"risk-based-mfa.js","sourceRoot":"","sources":["../../src/client/risk-based-mfa.ts"],"names":[],"mappings":";;AAqKA,oDAuBC;AAGD,gDAeC;AA7CD;;;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;QACD,uGAAuG;QACvG,WAAW,CAAC,IAAqB;YAC/B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,CAAC;QACD,oGAAoG;QACpG,mBAAmB,CAAC,MAAc,EAAE,QAAuC;YACzE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,sCAAsC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9G,CAAC;QACD,kFAAkF;QAClF,sBAAsB,CAAC,QAAuC;YAC5D,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,sCAAsC,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC1G,CAAC;KACF,CAAC;AACJ,CAAC;AAED,qDAAqD;AACrD,SAAgB,kBAAkB,CAAC,OAAkB;IACnD,OAAO;QACL,yEAAyE;QACzE,IAAI,CAAC,QAAkF,EAAE;YACvF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,6DAA6D;QAC7D,OAAO,CAAC,QAA2B,EAAE;YACnC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,6FAA6F;QAC7F,QAAQ,CAAC,EAAU,EAAE,OAA0B;YAC7C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACpH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -7,6 +7,7 @@ export interface Role {
7
7
  name: string;
8
8
  description: string | null;
9
9
  is_system: boolean;
10
+ visibility: 'public' | 'internal';
10
11
  permissions: string[];
11
12
  member_count: number;
12
13
  created_at: number;
@@ -23,11 +24,14 @@ export interface CreateRoleBody {
23
24
  key: string;
24
25
  name: string;
25
26
  description?: string;
27
+ /** `internal` = assignable by your backend only; hidden from org-admin pickers. */
28
+ visibility?: 'public' | 'internal';
26
29
  permissions?: string[];
27
30
  }
28
31
  export interface UpdateRoleBody {
29
32
  name?: string;
30
33
  description?: string;
34
+ visibility?: 'public' | 'internal';
31
35
  /** May be supplied but must equal the current key — the key is immutable. */
32
36
  key?: string;
33
37
  }
@@ -1 +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"}
1
+ {"version":3,"file":"roles.js","sourceRoot":"","sources":["../../src/client/roles.ts"],"names":[],"mappings":";;AAmDA,sCAmCC;AAeD,kDAiBC;AAtHD,uCAAgD;AAmDhD,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,83 @@
1
+ import { type RequestFn } from './request';
2
+ export type ServiceConnectorCategory = 'messaging' | 'crm' | 'analytics' | 'fraud' | 'idv' | 'http';
3
+ /** A configured service. Credentials are write-only: they live in the vault and are never returned. */
4
+ export interface ServiceConnector {
5
+ object: 'service_connector';
6
+ id: string;
7
+ name: string;
8
+ /** `twilio`, `sendgrid`, `slack`, `hubspot`, `salesforce`, `segment`, `fingerprint`, `arkose`, `forter`, `sardine`, `persona`, `onfido`, `veriff`, `stripe_identity` or `http`. */
9
+ kind: string;
10
+ category: ServiceConnectorCategory | null;
11
+ config: Record<string, string>;
12
+ enabled: boolean;
13
+ last_used_at: number | null;
14
+ last_status: 'ok' | 'error' | null;
15
+ created_at: number;
16
+ updated_at: number;
17
+ }
18
+ export interface ServiceConnectorField {
19
+ key: string;
20
+ label: string;
21
+ required: boolean;
22
+ type?: string;
23
+ enum?: string[];
24
+ default?: string;
25
+ }
26
+ export interface ServiceConnectorKind {
27
+ object: 'service_connector_kind';
28
+ kind: string;
29
+ name: string;
30
+ category: ServiceConnectorCategory;
31
+ summary: string;
32
+ credentials: ServiceConnectorField[];
33
+ config: ServiceConnectorField[];
34
+ operations: Array<{
35
+ operation: string;
36
+ summary: string;
37
+ input: ServiceConnectorField[];
38
+ }>;
39
+ }
40
+ export interface CreateServiceConnectorBody {
41
+ /** Lowercase letters, digits, `-` and `_`; what Actions call it by. */
42
+ name: string;
43
+ kind: string;
44
+ config?: Record<string, string>;
45
+ /** Stored in the vault. See the catalog entry for the fields. */
46
+ credentials: Record<string, string>;
47
+ }
48
+ export interface UpdateServiceConnectorBody {
49
+ name?: string;
50
+ enabled?: boolean;
51
+ /** Merged into the current config. */
52
+ config?: Record<string, string>;
53
+ /** Only the fields you pass are replaced. */
54
+ credentials?: Record<string, string>;
55
+ }
56
+ /** Typed connectors to messaging, CRM, analytics, fraud and identity-verification services. */
57
+ export declare function serviceConnectorsResource(request: RequestFn): {
58
+ /** The services you can connect, with their fields and operations. */
59
+ catalog(): Promise<{
60
+ object: "list";
61
+ data: ServiceConnectorKind[];
62
+ has_more: boolean;
63
+ }>;
64
+ list(): Promise<{
65
+ object: "list";
66
+ data: ServiceConnector[];
67
+ has_more: boolean;
68
+ }>;
69
+ get(id: string): Promise<ServiceConnector>;
70
+ create(body: CreateServiceConnectorBody, idempotencyKey?: string): Promise<ServiceConnector>;
71
+ update(id: string, body: UpdateServiceConnectorBody): Promise<ServiceConnector>;
72
+ delete(id: string): Promise<{
73
+ object: "service_connector.deleted";
74
+ id: string;
75
+ deleted: boolean;
76
+ }>;
77
+ /** Run an operation, e.g. `invoke(id, 'send_sms', { to, body })`. A failure from the service is a 502 `CONNECTOR_UPSTREAM_ERROR`. */
78
+ invoke(id: string, operation: string, input?: Record<string, unknown>): Promise<{
79
+ object: "service_connector_result";
80
+ operation: string;
81
+ result: Record<string, unknown>;
82
+ }>;
83
+ };
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serviceConnectorsResource = serviceConnectorsResource;
4
+ const request_1 = require("./request");
5
+ /** Typed connectors to messaging, CRM, analytics, fraud and identity-verification services. */
6
+ function serviceConnectorsResource(request) {
7
+ return {
8
+ /** The services you can connect, with their fields and operations. */
9
+ catalog() {
10
+ return request({ method: 'GET', path: '/v1/service_connector_catalog' });
11
+ },
12
+ list() {
13
+ return request({ method: 'GET', path: '/v1/service_connectors' });
14
+ },
15
+ get(id) {
16
+ return request({ method: 'GET', path: `/v1/service_connectors/${(0, request_1.enc)(id)}` });
17
+ },
18
+ create(body, idempotencyKey) {
19
+ return request({ method: 'POST', path: '/v1/service_connectors', body, idempotencyKey });
20
+ },
21
+ update(id, body) {
22
+ return request({ method: 'PATCH', path: `/v1/service_connectors/${(0, request_1.enc)(id)}`, body });
23
+ },
24
+ delete(id) {
25
+ return request({ method: 'DELETE', path: `/v1/service_connectors/${(0, request_1.enc)(id)}` });
26
+ },
27
+ /** Run an operation, e.g. `invoke(id, 'send_sms', { to, body })`. A failure from the service is a 502 `CONNECTOR_UPSTREAM_ERROR`. */
28
+ invoke(id, operation, input = {}) {
29
+ return request({ method: 'POST', path: `/v1/service_connectors/${(0, request_1.enc)(id)}/invoke`, body: { operation, input } });
30
+ },
31
+ };
32
+ }
33
+ //# sourceMappingURL=service-connectors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-connectors.js","sourceRoot":"","sources":["../../src/client/service-connectors.ts"],"names":[],"mappings":";;AA2DA,8DA0BC;AArFD,uCAAgD;AA0DhD,+FAA+F;AAC/F,SAAgB,yBAAyB,CAAC,OAAkB;IAC1D,OAAO;QACL,sEAAsE;QACtE,OAAO;YACL,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,+BAA+B,EAAE,CAAC,CAAC;QAC3E,CAAC;QACD,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,GAAG,CAAC,EAAU;YACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,0BAA0B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,CAAC,IAAgC,EAAE,cAAuB;YAC9D,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC3F,CAAC;QACD,MAAM,CAAC,EAAU,EAAE,IAAgC;YACjD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,0BAA0B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,CAAC,EAAU;YACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,0BAA0B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,qIAAqI;QACrI,MAAM,CAAC,EAAU,EAAE,SAAiB,EAAE,QAAiC,EAAE;YACvE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACnH,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,111 @@
1
+ import { type RequestFn } from './request';
2
+ /** Event type URIs (CAEP + RISC) a stream can subscribe to. */
3
+ export type SsfEventType = 'https://schemas.openid.net/secevent/caep/event-type/session-revoked' | 'https://schemas.openid.net/secevent/caep/event-type/credential-change' | 'https://schemas.openid.net/secevent/caep/event-type/assurance-level-change' | 'https://schemas.openid.net/secevent/caep/event-type/token-claims-change' | 'https://schemas.openid.net/secevent/caep/event-type/risk-level-change' | 'https://schemas.openid.net/secevent/risc/event-type/account-disabled' | 'https://schemas.openid.net/secevent/risc/event-type/account-enabled' | 'https://schemas.openid.net/secevent/risc/event-type/account-purged' | 'https://schemas.openid.net/secevent/risc/event-type/credential-compromise';
4
+ export interface SsfStream {
5
+ object: 'ssf_stream';
6
+ id: string;
7
+ description: string | null;
8
+ delivery: {
9
+ method: string;
10
+ endpoint_url?: string | null;
11
+ };
12
+ delivery_method: 'push' | 'poll';
13
+ audience: string;
14
+ events_requested: string[];
15
+ events_supported: string[];
16
+ status: 'enabled' | 'paused' | 'disabled';
17
+ created_at: number;
18
+ updated_at: number;
19
+ pending_events?: number;
20
+ }
21
+ /** Returned once on create for a poll stream. */
22
+ export interface SsfStreamCreated extends SsfStream {
23
+ poll_token?: string;
24
+ poll_endpoint?: string;
25
+ }
26
+ export interface CreateSsfStreamBody {
27
+ delivery_method: 'push' | 'poll';
28
+ /** Push only: the https endpoint that receives each SET. */
29
+ endpoint_url?: string;
30
+ /** Push only: sent as the `Authorization` header (write-only). */
31
+ authorization_header?: string;
32
+ audience?: string;
33
+ description?: string;
34
+ events_requested?: string[];
35
+ }
36
+ export interface UpdateSsfStreamBody {
37
+ endpoint_url?: string;
38
+ authorization_header?: string;
39
+ description?: string;
40
+ events_requested?: string[];
41
+ status?: 'enabled' | 'paused' | 'disabled';
42
+ }
43
+ export interface SsfEventRecord {
44
+ object: 'ssf_event';
45
+ id: string;
46
+ event_type: string;
47
+ user_id: string | null;
48
+ status: 'pending' | 'delivered' | 'failed';
49
+ attempts: number;
50
+ last_error: string | null;
51
+ delivered_at: number | null;
52
+ created_at: number;
53
+ }
54
+ export type SsfReceiverAction = 'revoke_sessions' | 'ban' | 'ignore';
55
+ export interface SsfReceiver {
56
+ object: 'ssf_receiver';
57
+ id: string;
58
+ name: string;
59
+ issuer: string;
60
+ jwks_uri: string;
61
+ audience: string | null;
62
+ actions: Record<string, SsfReceiverAction>;
63
+ enabled: boolean;
64
+ last_received_at: number | null;
65
+ created_at: number;
66
+ /** Only on create. */
67
+ receive_endpoint?: string;
68
+ }
69
+ export interface CreateSsfReceiverBody {
70
+ name: string;
71
+ issuer: string;
72
+ jwks_uri: string;
73
+ audience?: string;
74
+ actions?: Record<string, SsfReceiverAction>;
75
+ }
76
+ /** Shared Signals Framework (SSF 1.0) with CAEP and RISC: transmitter streams and inbound receivers. */
77
+ export declare function ssfResource(request: RequestFn): {
78
+ streams: {
79
+ list(): Promise<{
80
+ object: "list";
81
+ data: SsfStream[];
82
+ }>;
83
+ create(body: CreateSsfStreamBody): Promise<SsfStreamCreated>;
84
+ get(id: string): Promise<SsfStream>;
85
+ update(id: string, body: UpdateSsfStreamBody): Promise<SsfStream>;
86
+ delete(id: string): Promise<void>;
87
+ /** Queue a verification event so the receiver can confirm the stream works. */
88
+ verify(id: string, state?: string): Promise<{
89
+ object: "ssf_verification";
90
+ stream_id: string;
91
+ state: string;
92
+ }>;
93
+ events(id: string, query?: {
94
+ limit?: number;
95
+ }): Promise<{
96
+ object: "list";
97
+ data: SsfEventRecord[];
98
+ }>;
99
+ };
100
+ receivers: {
101
+ list(): Promise<{
102
+ object: "list";
103
+ data: SsfReceiver[];
104
+ }>;
105
+ create(body: CreateSsfReceiverBody): Promise<SsfReceiver>;
106
+ update(id: string, body: Partial<Omit<CreateSsfReceiverBody, "issuer">> & {
107
+ enabled?: boolean;
108
+ }): Promise<SsfReceiver>;
109
+ delete(id: string): Promise<void>;
110
+ };
111
+ };
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ssfResource = ssfResource;
4
+ /** Shared Signals Framework (SSF 1.0) with CAEP and RISC: transmitter streams and inbound receivers. */
5
+ function ssfResource(request) {
6
+ const stream = (id) => `/v1/ssf/streams/${encodeURIComponent(id)}`;
7
+ const receiver = (id) => `/v1/ssf/receivers/${encodeURIComponent(id)}`;
8
+ return {
9
+ streams: {
10
+ list() {
11
+ return request({ method: 'GET', path: '/v1/ssf/streams' });
12
+ },
13
+ create(body) {
14
+ return request({ method: 'POST', path: '/v1/ssf/streams', body });
15
+ },
16
+ get(id) {
17
+ return request({ method: 'GET', path: stream(id) });
18
+ },
19
+ update(id, body) {
20
+ return request({ method: 'PATCH', path: stream(id), body });
21
+ },
22
+ delete(id) {
23
+ return request({ method: 'DELETE', path: stream(id) });
24
+ },
25
+ /** Queue a verification event so the receiver can confirm the stream works. */
26
+ verify(id, state) {
27
+ return request({ method: 'POST', path: `${stream(id)}/verify`, body: { state } });
28
+ },
29
+ events(id, query = {}) {
30
+ return request({ method: 'GET', path: `${stream(id)}/events`, query });
31
+ },
32
+ },
33
+ receivers: {
34
+ list() {
35
+ return request({ method: 'GET', path: '/v1/ssf/receivers' });
36
+ },
37
+ create(body) {
38
+ return request({ method: 'POST', path: '/v1/ssf/receivers', body });
39
+ },
40
+ update(id, body) {
41
+ return request({ method: 'PATCH', path: receiver(id), body });
42
+ },
43
+ delete(id) {
44
+ return request({ method: 'DELETE', path: receiver(id) });
45
+ },
46
+ },
47
+ };
48
+ }
49
+ //# sourceMappingURL=ssf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssf.js","sourceRoot":"","sources":["../../src/client/ssf.ts"],"names":[],"mappings":";;AA4FA,kCA2CC;AA5CD,wGAAwG;AACxG,SAAgB,WAAW,CAAC,OAAkB;IAC5C,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,mBAAmB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;IAC3E,MAAM,QAAQ,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,qBAAqB,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;IAC/E,OAAO;QACL,OAAO,EAAE;YACP,IAAI;gBACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,CAAC,IAAyB;gBAC9B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,GAAG,CAAC,EAAU;gBACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACtD,CAAC;YACD,MAAM,CAAC,EAAU,EAAE,IAAyB;gBAC1C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,CAAC,EAAU;gBACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,+EAA+E;YAC/E,MAAM,CAAC,EAAU,EAAE,KAAc;gBAC/B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;YACpF,CAAC;YACD,MAAM,CAAC,EAAU,EAAE,QAA4B,EAAE;gBAC/C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;YACzE,CAAC;SACF;QACD,SAAS,EAAE;YACT,IAAI;gBACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,CAAC,IAA2B;gBAChC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,CAAC,EAAU,EAAE,IAA4E;gBAC7F,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,CAAC,EAAU;gBACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3D,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -5,6 +5,8 @@ import type { ListPage } from './types';
5
5
  * self-service-profiles model. It fixes which protocols an end-customer may
6
6
  * configure and either binds an org or promises to name one at ticket issue.
7
7
  */
8
+ /** An Admin Portal task a ticket may perform for its organization. */
9
+ export type SsoPortalIntent = 'sso' | 'directory_sync' | 'domain_verification' | 'log_stream' | 'audit_log' | 'certificate_renewal' | 'api_keys' | 'webhooks';
8
10
  export interface SsoOnboardingProfile {
9
11
  object: 'sso_onboarding_profile';
10
12
  id: string;
@@ -14,6 +16,8 @@ export interface SsoOnboardingProfile {
14
16
  organization_id: string | null;
15
17
  company_name: string | null;
16
18
  allow_scim: boolean;
19
+ /** The Admin Portal tasks this profile's tickets may perform. */
20
+ intents: SsoPortalIntent[];
17
21
  created_at: number;
18
22
  updated_at: number;
19
23
  }
@@ -49,6 +53,8 @@ export interface CreateSsoOnboardingProfileBody {
49
53
  organization_id?: string | null;
50
54
  company_name?: string | null;
51
55
  allow_scim?: boolean;
56
+ /** Admin Portal tasks to grant; omit for the classic SSO (+ domain) profile. */
57
+ intents?: SsoPortalIntent[];
52
58
  }
53
59
  export interface CreateSsoOnboardingTicketBody {
54
60
  /** Required for an unbound profile; must match (or be omitted) for a bound one. */
@@ -1 +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"}
1
+ {"version":3,"file":"sso-onboarding.js","sourceRoot":"","sources":["../../src/client/sso-onboarding.ts"],"names":[],"mappings":";;AA+EA,sDA6CC;AA5HD,uCAAgD;AA+EhD,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"}