@atlasauth/backend 0.25.0 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/CHANGELOG.md +32 -1
  2. package/dist/client/abac.d.ts +389 -0
  3. package/dist/client/abac.js +98 -0
  4. package/dist/client/abac.js.map +1 -1
  5. package/dist/client/analytics-reports.d.ts +1 -1
  6. package/dist/client/authz-decisions.d.ts +108 -0
  7. package/dist/client/authz-decisions.js +40 -0
  8. package/dist/client/authz-decisions.js.map +1 -0
  9. package/dist/client/connections.d.ts +507 -0
  10. package/dist/client/connections.js +164 -0
  11. package/dist/client/connections.js.map +1 -0
  12. package/dist/client/custom-oauth-providers.d.ts +15 -0
  13. package/dist/client/custom-oauth-providers.js.map +1 -1
  14. package/dist/client/desktop-mfa.d.ts +104 -0
  15. package/dist/client/desktop-mfa.js +44 -0
  16. package/dist/client/desktop-mfa.js.map +1 -0
  17. package/dist/client/email-templates.d.ts +1 -1
  18. package/dist/client/email-templates.js.map +1 -1
  19. package/dist/client/fga.d.ts +125 -4
  20. package/dist/client/fga.js +40 -0
  21. package/dist/client/fga.js.map +1 -1
  22. package/dist/client/iga.d.ts +436 -0
  23. package/dist/client/iga.js +82 -0
  24. package/dist/client/iga.js.map +1 -0
  25. package/dist/client/index.d.ts +490 -2
  26. package/dist/client/index.js +23 -0
  27. package/dist/client/index.js.map +1 -1
  28. package/dist/client/least-privilege.d.ts +95 -0
  29. package/dist/client/least-privilege.js +28 -0
  30. package/dist/client/least-privilege.js.map +1 -0
  31. package/dist/client/managed-grants.d.ts +52 -0
  32. package/dist/client/managed-grants.js +28 -0
  33. package/dist/client/managed-grants.js.map +1 -0
  34. package/dist/client/mcp-gateways.d.ts +72 -0
  35. package/dist/client/mcp-gateways.js +22 -0
  36. package/dist/client/mcp-gateways.js.map +1 -1
  37. package/dist/client/oauth-clients.d.ts +4 -0
  38. package/dist/client/oauth-clients.js.map +1 -1
  39. package/dist/client/openfga.d.ts +90 -3
  40. package/dist/client/openfga.js +27 -1
  41. package/dist/client/openfga.js.map +1 -1
  42. package/dist/client/policy-bundles.d.ts +105 -0
  43. package/dist/client/policy-bundles.js +38 -0
  44. package/dist/client/policy-bundles.js.map +1 -0
  45. package/dist/client/resources.d.ts +1 -0
  46. package/dist/client/resources.js.map +1 -1
  47. package/dist/client/ssf.d.ts +2 -1
  48. package/dist/client/ssf.js.map +1 -1
  49. package/dist/client/vc.d.ts +8 -0
  50. package/dist/client/vc.js.map +1 -1
  51. package/dist/index.d.ts +2 -0
  52. package/dist/index.js +3 -0
  53. package/dist/index.js.map +1 -1
  54. package/dist/policy-bundle.d.ts +110 -0
  55. package/dist/policy-bundle.js +289 -0
  56. package/dist/policy-bundle.js.map +1 -0
  57. package/dist/uma.d.ts +77 -0
  58. package/dist/uma.js +95 -0
  59. package/dist/uma.js.map +1 -0
  60. package/package.json +2 -2
@@ -4,6 +4,14 @@ exports.fgaResource = fgaResource;
4
4
  const request_1 = require("./request");
5
5
  function fgaResource(request) {
6
6
  const api = {
7
+ settings: {
8
+ get() {
9
+ return request({ method: 'GET', path: '/v1/fga/settings' });
10
+ },
11
+ update(body) {
12
+ return request({ method: 'PUT', path: '/v1/fga/settings', body });
13
+ },
14
+ },
7
15
  stores: {
8
16
  list() {
9
17
  return request({ method: 'GET', path: '/v1/fga/stores' });
@@ -60,6 +68,35 @@ function fgaResource(request) {
60
68
  listObjects(storeId, body) {
61
69
  return request({ method: 'POST', path: `/v1/fga/stores/${(0, request_1.enc)(storeId)}/list-objects`, body });
62
70
  },
71
+ /**
72
+ * Who has a relation on an object: concrete users, usersets (give the filter
73
+ * a `relation`) and the `type:*` wildcard with `excluded_users`. One page.
74
+ */
75
+ listUsers(storeId, body) {
76
+ return request({ method: 'POST', path: `/v1/fga/stores/${(0, request_1.enc)(storeId)}/list-users`, body });
77
+ },
78
+ /** {@link listUsers} following `continuation_token` until every page is collected. */
79
+ async listAllUsers(storeId, body) {
80
+ let page = await api.listUsers(storeId, body);
81
+ const users = [...page.users];
82
+ while (page.continuation_token) {
83
+ page = await api.listUsers(storeId, { ...body, continuation_token: page.continuation_token });
84
+ users.push(...page.users);
85
+ }
86
+ return { ...page, users };
87
+ },
88
+ /**
89
+ * The store's tuple change log, in commit order. The returned
90
+ * `continuation_token` works even on the last page: persist it and call again
91
+ * to receive only what changed since.
92
+ */
93
+ readChanges(storeId, params = {}) {
94
+ return request({
95
+ method: 'GET',
96
+ path: `/v1/fga/stores/${(0, request_1.enc)(storeId)}/changes`,
97
+ query: { ...params },
98
+ });
99
+ },
63
100
  /** Expand the full userset tree for an object#relation. */
64
101
  expand(storeId, body) {
65
102
  return request({ method: 'POST', path: `/v1/fga/stores/${(0, request_1.enc)(storeId)}/expand`, body });
@@ -77,6 +114,9 @@ function fgaResource(request) {
77
114
  check: (body) => api.check(storeId, body),
78
115
  batchCheck: (body) => api.batchCheck(storeId, body),
79
116
  listObjects: (body) => api.listObjects(storeId, body),
117
+ listUsers: (body) => api.listUsers(storeId, body),
118
+ listAllUsers: (body) => api.listAllUsers(storeId, body),
119
+ readChanges: (params) => api.readChanges(storeId, params),
80
120
  expand: (body) => api.expand(storeId, body),
81
121
  models: {
82
122
  list: () => api.models.list(storeId),
@@ -1 +1 @@
1
- {"version":3,"file":"fga.js","sourceRoot":"","sources":["../../src/client/fga.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fga.js","sourceRoot":"","sources":["../../src/client/fga.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,436 @@
1
+ import { type RequestFn } from './request';
2
+ export type IgaKind = 'role' | 'org_membership' | 'group' | 'resource_role' | 'app_assignment' | 'custom';
3
+ export type IgaRisk = 'low' | 'medium' | 'high' | 'critical';
4
+ export type IgaApproverSelector = {
5
+ type: 'manager' | 'owner';
6
+ } | {
7
+ type: 'group' | 'users';
8
+ ids: string[];
9
+ };
10
+ export interface IgaApprovalStep {
11
+ type: 'manager' | 'owner' | 'group' | 'users';
12
+ /** A group slug (`group`) or user ids (`users`). */
13
+ ids?: string[];
14
+ /** `any` approver decides the step; `all` must approve. Default `any`. */
15
+ mode?: 'any' | 'all';
16
+ /** After this long without a decision the step escalates. */
17
+ timeout_seconds?: number;
18
+ escalate_to?: IgaApproverSelector;
19
+ }
20
+ export interface IgaEntitlement {
21
+ object: 'iga_entitlement';
22
+ id: string;
23
+ key: string;
24
+ name: string;
25
+ description: string | null;
26
+ kind: IgaKind;
27
+ target: Record<string, unknown>;
28
+ owner_user_id: string | null;
29
+ risk_level: IgaRisk;
30
+ approval_rules: {
31
+ steps: IgaApprovalStep[];
32
+ };
33
+ max_duration_seconds: number | null;
34
+ requestable: boolean;
35
+ require_justification: boolean;
36
+ created_at: number;
37
+ updated_at: number;
38
+ }
39
+ export interface IgaEntitlementInput {
40
+ key: string;
41
+ name: string;
42
+ kind: IgaKind;
43
+ /** role `{role_key}`, org_membership `{organization_id, role}`, group `{group}`, resource_role `{resource_id, role}`, app_assignment `{app_id}`, custom (free-form). */
44
+ target: Record<string, unknown>;
45
+ description?: string | null;
46
+ owner_user_id?: string | null;
47
+ risk_level?: IgaRisk;
48
+ approval_rules?: {
49
+ steps: IgaApprovalStep[];
50
+ };
51
+ max_duration_seconds?: number | null;
52
+ requestable?: boolean;
53
+ require_justification?: boolean;
54
+ }
55
+ export type IgaRequestStatus = 'pending' | 'approved' | 'denied' | 'cancelled' | 'fulfilled' | 'failed';
56
+ export interface IgaRequest {
57
+ object: 'iga_request';
58
+ id: string;
59
+ entitlement_id: string;
60
+ requester_user_id: string | null;
61
+ beneficiary_user_id: string;
62
+ source: 'self' | 'admin';
63
+ justification: string | null;
64
+ duration_seconds: number | null;
65
+ status: IgaRequestStatus;
66
+ current_step: number | null;
67
+ steps: Array<{
68
+ index: number;
69
+ type: string;
70
+ mode: 'any' | 'all';
71
+ approvers: string[];
72
+ status: 'pending' | 'approved' | 'denied';
73
+ escalated: boolean;
74
+ timeout_seconds: number | null;
75
+ sod_rule_id: string | null;
76
+ }>;
77
+ sod: Array<{
78
+ rule_id: string;
79
+ rule_name: string;
80
+ mode: 'block' | 'require_approval';
81
+ conflicting_entitlement_id: string;
82
+ }>;
83
+ approvals: Array<{
84
+ step: number;
85
+ approver_user_id: string;
86
+ acting_for_user_id: string | null;
87
+ decision: 'approve' | 'deny';
88
+ comment: string | null;
89
+ decided_at: number;
90
+ }>;
91
+ failure: string | null;
92
+ decided_at: number | null;
93
+ created_at: number;
94
+ }
95
+ export interface IgaGrant {
96
+ object: 'iga_grant';
97
+ id: string;
98
+ user_id: string;
99
+ entitlement_id: string;
100
+ request_id: string | null;
101
+ source: 'request' | 'admin' | 'birthright' | 'existing';
102
+ status: 'active' | 'revoked' | 'expired';
103
+ granted_at: number;
104
+ expires_at: number | null;
105
+ revoked_at: number | null;
106
+ revoked_reason: string | null;
107
+ revoked_by: string | null;
108
+ /** The access existed before governance took it over; an expiry leaves it in place. */
109
+ adopted: boolean;
110
+ }
111
+ export interface IgaDelegation {
112
+ object: 'iga_delegation';
113
+ id: string;
114
+ delegator_user_id: string;
115
+ delegate_user_id: string;
116
+ starts_at: number;
117
+ ends_at: number;
118
+ created_at: number;
119
+ }
120
+ export interface IgaSodRule {
121
+ object: 'iga_sod_rule';
122
+ id: string;
123
+ name: string;
124
+ description: string | null;
125
+ entitlement_a: string;
126
+ entitlement_b: string;
127
+ mode: 'block' | 'require_approval';
128
+ approver: IgaApprovalStep | null;
129
+ enabled: boolean;
130
+ created_at: number;
131
+ updated_at: number;
132
+ }
133
+ export interface IgaSodViolation {
134
+ object: 'iga_sod_violation';
135
+ id: string;
136
+ rule_id: string;
137
+ rule_name: string | null;
138
+ mode: string | null;
139
+ user_id: string;
140
+ status: 'open' | 'accepted' | 'resolved';
141
+ source: 'request' | 'assignment' | 'scan';
142
+ request_id: string | null;
143
+ note: string | null;
144
+ detected_at: number;
145
+ resolved_at: number | null;
146
+ }
147
+ export interface IgaBirthrightMatch {
148
+ group?: string;
149
+ organization_id?: string;
150
+ org_role?: string;
151
+ app_role?: string;
152
+ email_domain?: string;
153
+ }
154
+ export interface IgaBirthrightRule {
155
+ object: 'iga_birthright_rule';
156
+ id: string;
157
+ name: string;
158
+ match: IgaBirthrightMatch;
159
+ entitlement_ids: string[];
160
+ revoke_on_unmatch: boolean;
161
+ enabled: boolean;
162
+ created_at: number;
163
+ }
164
+ export interface IgaSettings {
165
+ object: 'iga_settings';
166
+ jml_enabled: boolean;
167
+ leaver_action: 'revoke' | 'revoke_and_close';
168
+ leaver_close_grace_seconds: number | null;
169
+ }
170
+ export interface IgaCampaign {
171
+ object: 'iga_campaign';
172
+ id: string;
173
+ name: string;
174
+ description: string | null;
175
+ scope_type: 'all' | 'entitlement' | 'app' | 'role' | 'group' | 'org';
176
+ scope_ids: string[];
177
+ reviewer_type: 'manager' | 'owner' | 'named';
178
+ reviewer_ids: string[];
179
+ status: 'draft' | 'active' | 'closed';
180
+ due_at: number | null;
181
+ reminder_days: number[];
182
+ auto_revoke: boolean;
183
+ launched_at: number | null;
184
+ closed_at: number | null;
185
+ created_at: number;
186
+ }
187
+ export interface IgaCampaignInput {
188
+ name: string;
189
+ description?: string;
190
+ scope_type?: IgaCampaign['scope_type'];
191
+ scope_ids?: string[];
192
+ reviewer_type?: IgaCampaign['reviewer_type'];
193
+ reviewer_ids?: string[];
194
+ due_at?: number;
195
+ reminder_days?: number[];
196
+ /** Remove access reviewers marked for revocation when the campaign closes. Default true. */
197
+ auto_revoke?: boolean;
198
+ }
199
+ export interface IgaCampaignItem {
200
+ object: 'iga_campaign_item';
201
+ id: string;
202
+ campaign_id: string;
203
+ grant_id: string;
204
+ user_id: string;
205
+ entitlement_id: string;
206
+ reviewer_user_id: string | null;
207
+ decision: 'pending' | 'certified' | 'revoked';
208
+ decided_by: string | null;
209
+ decided_at: number | null;
210
+ comment: string | null;
211
+ revoked_applied: boolean;
212
+ }
213
+ export interface IgaCampaignProgress {
214
+ object: 'iga_campaign_progress';
215
+ campaign_id: string;
216
+ status: IgaCampaign['status'];
217
+ total: number;
218
+ pending: number;
219
+ certified: number;
220
+ revoked: number;
221
+ percent_complete: number;
222
+ overdue: boolean;
223
+ reviewers: Array<{
224
+ reviewer_user_id: string | null;
225
+ total: number;
226
+ decided: number;
227
+ }>;
228
+ }
229
+ export interface IgaEvidence {
230
+ object: 'iga_campaign_evidence';
231
+ campaign: IgaCampaign;
232
+ progress: IgaCampaignProgress;
233
+ generated_at: string;
234
+ items: Array<{
235
+ item_id: string;
236
+ user_id: string;
237
+ user_erased: boolean;
238
+ user_email_masked?: string | null;
239
+ entitlement_key: string | null;
240
+ entitlement_name: string | null;
241
+ risk_level: string | null;
242
+ reviewer_user_id: string | null;
243
+ decision: string;
244
+ decided_by: string | null;
245
+ decided_at: string | null;
246
+ revoked_applied: boolean;
247
+ }>;
248
+ }
249
+ export interface IgaOffboarding {
250
+ object: 'iga_offboarding';
251
+ user_id: string;
252
+ revoked_grants: number;
253
+ cancelled_requests: number;
254
+ account_closure: {
255
+ effective_at: number;
256
+ request_id: string;
257
+ } | null;
258
+ }
259
+ type List<T> = {
260
+ object: 'list';
261
+ data: T[];
262
+ has_more: boolean;
263
+ };
264
+ type Deleted<O extends string> = {
265
+ object: O;
266
+ id: string;
267
+ deleted: true;
268
+ };
269
+ /**
270
+ * Identity governance: the entitlement catalog, access requests with multi-step
271
+ * approvals, time-bound grants, certification campaigns, separation of duties
272
+ * and joiner/mover/leaver automation. Needs the `iga:read` / `iga:write` scopes.
273
+ */
274
+ export declare function igaResource(request: RequestFn): {
275
+ entitlements: {
276
+ list: (params?: {
277
+ kind?: IgaKind;
278
+ }) => Promise<List<IgaEntitlement>>;
279
+ get: (idOrKey: string) => Promise<IgaEntitlement>;
280
+ create: (body: IgaEntitlementInput) => Promise<IgaEntitlement>;
281
+ update: (idOrKey: string, body: Partial<Omit<IgaEntitlementInput, "key" | "kind">>) => Promise<IgaEntitlement>;
282
+ delete: (idOrKey: string) => Promise<Deleted<"iga_entitlement">>;
283
+ };
284
+ requests: {
285
+ list: (params?: {
286
+ status?: IgaRequestStatus;
287
+ user_id?: string;
288
+ requester_user_id?: string;
289
+ entitlement?: string;
290
+ limit?: number;
291
+ }) => Promise<List<IgaRequest>>;
292
+ get: (id: string) => Promise<IgaRequest>;
293
+ /** File a request for a user; it follows the entitlement's approval steps. */
294
+ create: (body: {
295
+ entitlement: string;
296
+ user_id: string;
297
+ requester_user_id?: string;
298
+ justification?: string;
299
+ duration_seconds?: number;
300
+ }) => Promise<IgaRequest>;
301
+ /** Decide the open step as `approver_user_id`, or as an administrator override when omitted. */
302
+ decide: (id: string, body: {
303
+ decision: "approve" | "deny";
304
+ comment?: string;
305
+ approver_user_id?: string;
306
+ }) => Promise<IgaRequest>;
307
+ cancel: (id: string) => Promise<IgaRequest>;
308
+ /** Requests waiting on one person (their own steps and delegated ones). */
309
+ inbox: (approverUserId: string) => Promise<List<IgaRequest>>;
310
+ };
311
+ grants: {
312
+ list: (params?: {
313
+ user_id?: string;
314
+ entitlement?: string;
315
+ status?: "active" | "revoked" | "expired";
316
+ limit?: number;
317
+ }) => Promise<List<IgaGrant>>;
318
+ create: (body: {
319
+ entitlement: string;
320
+ user_id: string;
321
+ expires_at?: number;
322
+ override_reason?: string;
323
+ }) => Promise<IgaGrant>;
324
+ revoke: (id: string, body?: {
325
+ reason?: string;
326
+ }) => Promise<IgaGrant>;
327
+ };
328
+ delegations: {
329
+ list: (params?: {
330
+ delegator_user_id?: string;
331
+ }) => Promise<List<IgaDelegation>>;
332
+ create: (body: {
333
+ delegator_user_id: string;
334
+ delegate_user_id: string;
335
+ ends_at: number;
336
+ starts_at?: number;
337
+ }) => Promise<IgaDelegation>;
338
+ delete: (id: string) => Promise<Deleted<"iga_delegation">>;
339
+ };
340
+ sod: {
341
+ listRules: () => Promise<List<IgaSodRule>>;
342
+ createRule: (body: {
343
+ name: string;
344
+ entitlement_a: string;
345
+ entitlement_b: string;
346
+ mode?: "block" | "require_approval";
347
+ approver?: IgaApprovalStep;
348
+ description?: string;
349
+ enabled?: boolean;
350
+ }) => Promise<IgaSodRule>;
351
+ updateRule: (id: string, body: {
352
+ name?: string;
353
+ description?: string;
354
+ mode?: "block" | "require_approval";
355
+ approver?: IgaApprovalStep;
356
+ enabled?: boolean;
357
+ }) => Promise<IgaSodRule>;
358
+ deleteRule: (id: string) => Promise<Deleted<"iga_sod_rule">>;
359
+ /** The violations report. */
360
+ violations: (params?: {
361
+ status?: "open" | "accepted" | "resolved";
362
+ }) => Promise<List<IgaSodViolation>>;
363
+ /** Re-check every rule against what people hold now. */
364
+ scan: () => Promise<{
365
+ object: "iga_sod_scan";
366
+ found: number;
367
+ resolved: number;
368
+ }>;
369
+ };
370
+ lifecycle: {
371
+ listBirthrightRules: () => Promise<List<IgaBirthrightRule>>;
372
+ createBirthrightRule: (body: {
373
+ name: string;
374
+ match: IgaBirthrightMatch;
375
+ entitlement_ids: string[];
376
+ revoke_on_unmatch?: boolean;
377
+ enabled?: boolean;
378
+ }) => Promise<IgaBirthrightRule>;
379
+ updateBirthrightRule: (id: string, body: Partial<{
380
+ name: string;
381
+ match: IgaBirthrightMatch;
382
+ entitlement_ids: string[];
383
+ revoke_on_unmatch: boolean;
384
+ enabled: boolean;
385
+ }>) => Promise<IgaBirthrightRule>;
386
+ deleteBirthrightRule: (id: string) => Promise<Deleted<"iga_birthright_rule">>;
387
+ /** Re-evaluate one user's birthright access now (joiner or mover). */
388
+ reconcile: (userId: string) => Promise<{
389
+ object: "iga_jml";
390
+ user_id: string;
391
+ granted: string[];
392
+ revoked: string[];
393
+ }>;
394
+ /** Offboard a leaver; with `close_account` the closure goes through the data-rights path. */
395
+ offboard: (userId: string, body?: {
396
+ close_account?: boolean;
397
+ grace_seconds?: number;
398
+ reason?: string;
399
+ }) => Promise<IgaOffboarding>;
400
+ settings: () => Promise<IgaSettings>;
401
+ updateSettings: (body: Partial<Omit<IgaSettings, "object">>) => Promise<IgaSettings>;
402
+ };
403
+ campaigns: {
404
+ list: (params?: {
405
+ status?: IgaCampaign["status"];
406
+ }) => Promise<List<IgaCampaign>>;
407
+ get: (id: string) => Promise<IgaCampaign & {
408
+ progress: IgaCampaignProgress;
409
+ }>;
410
+ create: (body: IgaCampaignInput) => Promise<IgaCampaign>;
411
+ delete: (id: string) => Promise<Deleted<"iga_campaign">>;
412
+ /** Freeze the review list (adopting access that was never granted through governance) and notify reviewers. */
413
+ launch: (id: string) => Promise<IgaCampaign>;
414
+ /** Close the campaign; with auto-revoke, access reviewers marked for revocation is removed. */
415
+ close: (id: string) => Promise<IgaCampaign>;
416
+ items: (id: string, params?: {
417
+ decision?: IgaCampaignItem["decision"];
418
+ reviewer_user_id?: string;
419
+ }) => Promise<List<IgaCampaignItem>>;
420
+ progress: (id: string) => Promise<IgaCampaignProgress>;
421
+ /** Audit evidence as JSON. People appear by id only; free-text comments are never included. */
422
+ evidence: (id: string, params?: {
423
+ masked_emails?: boolean;
424
+ }) => Promise<IgaEvidence>;
425
+ /** The same evidence as CSV text. */
426
+ evidenceCsv: (id: string, params?: {
427
+ masked_emails?: boolean;
428
+ }) => Promise<string>;
429
+ decide: (itemId: string, body: {
430
+ decision: "certify" | "revoke";
431
+ comment?: string;
432
+ reviewer_user_id?: string;
433
+ }) => Promise<IgaCampaignItem>;
434
+ };
435
+ };
436
+ export {};
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.igaResource = igaResource;
4
+ const request_1 = require("./request");
5
+ /**
6
+ * Identity governance: the entitlement catalog, access requests with multi-step
7
+ * approvals, time-bound grants, certification campaigns, separation of duties
8
+ * and joiner/mover/leaver automation. Needs the `iga:read` / `iga:write` scopes.
9
+ */
10
+ function igaResource(request) {
11
+ const P = '/v1/iga';
12
+ return {
13
+ entitlements: {
14
+ list: (params = {}) => request({ method: 'GET', path: `${P}/entitlements`, query: params }),
15
+ get: (idOrKey) => request({ method: 'GET', path: `${P}/entitlements/${(0, request_1.enc)(idOrKey)}` }),
16
+ create: (body) => request({ method: 'POST', path: `${P}/entitlements`, body }),
17
+ update: (idOrKey, body) => request({ method: 'PATCH', path: `${P}/entitlements/${(0, request_1.enc)(idOrKey)}`, body }),
18
+ delete: (idOrKey) => request({ method: 'DELETE', path: `${P}/entitlements/${(0, request_1.enc)(idOrKey)}` }),
19
+ },
20
+ requests: {
21
+ list: (params = {}) => request({ method: 'GET', path: `${P}/requests`, query: params }),
22
+ get: (id) => request({ method: 'GET', path: `${P}/requests/${(0, request_1.enc)(id)}` }),
23
+ /** File a request for a user; it follows the entitlement's approval steps. */
24
+ create: (body) => request({ method: 'POST', path: `${P}/requests`, body }),
25
+ /** Decide the open step as `approver_user_id`, or as an administrator override when omitted. */
26
+ decide: (id, body) => request({ method: 'POST', path: `${P}/requests/${(0, request_1.enc)(id)}/decide`, body }),
27
+ cancel: (id) => request({ method: 'POST', path: `${P}/requests/${(0, request_1.enc)(id)}/cancel` }),
28
+ /** Requests waiting on one person (their own steps and delegated ones). */
29
+ inbox: (approverUserId) => request({ method: 'GET', path: `${P}/approvals`, query: { approver_user_id: approverUserId } }),
30
+ },
31
+ grants: {
32
+ list: (params = {}) => request({ method: 'GET', path: `${P}/grants`, query: params }),
33
+ create: (body) => request({ method: 'POST', path: `${P}/grants`, body }),
34
+ revoke: (id, body = {}) => request({ method: 'POST', path: `${P}/grants/${(0, request_1.enc)(id)}/revoke`, body }),
35
+ },
36
+ delegations: {
37
+ list: (params = {}) => request({ method: 'GET', path: `${P}/delegations`, query: params }),
38
+ create: (body) => request({ method: 'POST', path: `${P}/delegations`, body }),
39
+ delete: (id) => request({ method: 'DELETE', path: `${P}/delegations/${(0, request_1.enc)(id)}` }),
40
+ },
41
+ sod: {
42
+ listRules: () => request({ method: 'GET', path: `${P}/sod_rules` }),
43
+ createRule: (body) => request({ method: 'POST', path: `${P}/sod_rules`, body }),
44
+ updateRule: (id, body) => request({ method: 'PATCH', path: `${P}/sod_rules/${(0, request_1.enc)(id)}`, body }),
45
+ deleteRule: (id) => request({ method: 'DELETE', path: `${P}/sod_rules/${(0, request_1.enc)(id)}` }),
46
+ /** The violations report. */
47
+ violations: (params = {}) => request({ method: 'GET', path: `${P}/sod_violations`, query: params }),
48
+ /** Re-check every rule against what people hold now. */
49
+ scan: () => request({ method: 'POST', path: `${P}/sod_violations/scan` }),
50
+ },
51
+ lifecycle: {
52
+ listBirthrightRules: () => request({ method: 'GET', path: `${P}/birthright_rules` }),
53
+ createBirthrightRule: (body) => request({ method: 'POST', path: `${P}/birthright_rules`, body }),
54
+ updateBirthrightRule: (id, body) => request({ method: 'PATCH', path: `${P}/birthright_rules/${(0, request_1.enc)(id)}`, body }),
55
+ deleteBirthrightRule: (id) => request({ method: 'DELETE', path: `${P}/birthright_rules/${(0, request_1.enc)(id)}` }),
56
+ /** Re-evaluate one user's birthright access now (joiner or mover). */
57
+ reconcile: (userId) => request({ method: 'POST', path: `${P}/users/${(0, request_1.enc)(userId)}/reconcile` }),
58
+ /** Offboard a leaver; with `close_account` the closure goes through the data-rights path. */
59
+ offboard: (userId, body = {}) => request({ method: 'POST', path: `${P}/users/${(0, request_1.enc)(userId)}/offboard`, body }),
60
+ settings: () => request({ method: 'GET', path: `${P}/settings` }),
61
+ updateSettings: (body) => request({ method: 'PUT', path: `${P}/settings`, body }),
62
+ },
63
+ campaigns: {
64
+ list: (params = {}) => request({ method: 'GET', path: `${P}/campaigns`, query: params }),
65
+ get: (id) => request({ method: 'GET', path: `${P}/campaigns/${(0, request_1.enc)(id)}` }),
66
+ create: (body) => request({ method: 'POST', path: `${P}/campaigns`, body }),
67
+ delete: (id) => request({ method: 'DELETE', path: `${P}/campaigns/${(0, request_1.enc)(id)}` }),
68
+ /** Freeze the review list (adopting access that was never granted through governance) and notify reviewers. */
69
+ launch: (id) => request({ method: 'POST', path: `${P}/campaigns/${(0, request_1.enc)(id)}/launch` }),
70
+ /** Close the campaign; with auto-revoke, access reviewers marked for revocation is removed. */
71
+ close: (id) => request({ method: 'POST', path: `${P}/campaigns/${(0, request_1.enc)(id)}/close` }),
72
+ items: (id, params = {}) => request({ method: 'GET', path: `${P}/campaigns/${(0, request_1.enc)(id)}/items`, query: params }),
73
+ progress: (id) => request({ method: 'GET', path: `${P}/campaigns/${(0, request_1.enc)(id)}/progress` }),
74
+ /** Audit evidence as JSON. People appear by id only; free-text comments are never included. */
75
+ evidence: (id, params = {}) => request({ method: 'GET', path: `${P}/campaigns/${(0, request_1.enc)(id)}/evidence`, query: params }),
76
+ /** The same evidence as CSV text. */
77
+ evidenceCsv: (id, params = {}) => request({ method: 'GET', path: `${P}/campaigns/${(0, request_1.enc)(id)}/evidence`, query: { ...params, format: 'csv' }, raw: true }),
78
+ decide: (itemId, body) => request({ method: 'POST', path: `${P}/campaign_items/${(0, request_1.enc)(itemId)}/decide`, body }),
79
+ },
80
+ };
81
+ }
82
+ //# sourceMappingURL=iga.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iga.js","sourceRoot":"","sources":["../../src/client/iga.ts"],"names":[],"mappings":"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"}