@atlasauth/backend 0.25.0 → 0.27.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 (115) hide show
  1. package/CHANGELOG.md +42 -1
  2. package/dist/client/abac.d.ts +454 -0
  3. package/dist/client/abac.js +123 -0
  4. package/dist/client/abac.js.map +1 -1
  5. package/dist/client/access-policies.d.ts +84 -2
  6. package/dist/client/access-policies.js +8 -0
  7. package/dist/client/access-policies.js.map +1 -1
  8. package/dist/client/actions.d.ts +1 -1
  9. package/dist/client/actions.js.map +1 -1
  10. package/dist/client/agent-platform.d.ts +294 -0
  11. package/dist/client/agent-platform.js +132 -0
  12. package/dist/client/agent-platform.js.map +1 -0
  13. package/dist/client/analytics-reports.d.ts +1 -1
  14. package/dist/client/app-catalog.d.ts +60 -1
  15. package/dist/client/app-catalog.js +32 -2
  16. package/dist/client/app-catalog.js.map +1 -1
  17. package/dist/client/authz-decisions.d.ts +154 -0
  18. package/dist/client/authz-decisions.js +53 -0
  19. package/dist/client/authz-decisions.js.map +1 -0
  20. package/dist/client/connections.d.ts +519 -0
  21. package/dist/client/connections.js +171 -0
  22. package/dist/client/connections.js.map +1 -0
  23. package/dist/client/custom-oauth-providers.d.ts +15 -0
  24. package/dist/client/custom-oauth-providers.js.map +1 -1
  25. package/dist/client/desktop-mfa.d.ts +141 -0
  26. package/dist/client/desktop-mfa.js +58 -0
  27. package/dist/client/desktop-mfa.js.map +1 -0
  28. package/dist/client/devices.d.ts +130 -0
  29. package/dist/client/devices.js +54 -0
  30. package/dist/client/devices.js.map +1 -1
  31. package/dist/client/email-templates.d.ts +1 -1
  32. package/dist/client/email-templates.js.map +1 -1
  33. package/dist/client/fga.d.ts +301 -5
  34. package/dist/client/fga.js +81 -1
  35. package/dist/client/fga.js.map +1 -1
  36. package/dist/client/iga.d.ts +436 -0
  37. package/dist/client/iga.js +82 -0
  38. package/dist/client/iga.js.map +1 -0
  39. package/dist/client/index.d.ts +3767 -2443
  40. package/dist/client/index.js +51 -0
  41. package/dist/client/index.js.map +1 -1
  42. package/dist/client/least-privilege.d.ts +95 -0
  43. package/dist/client/least-privilege.js +28 -0
  44. package/dist/client/least-privilege.js.map +1 -0
  45. package/dist/client/log-streams.d.ts +1 -1
  46. package/dist/client/managed-grants.d.ts +52 -0
  47. package/dist/client/managed-grants.js +28 -0
  48. package/dist/client/managed-grants.js.map +1 -0
  49. package/dist/client/mcp-gateways.d.ts +220 -2
  50. package/dist/client/mcp-gateways.js +74 -0
  51. package/dist/client/mcp-gateways.js.map +1 -1
  52. package/dist/client/messaging.d.ts +11 -2
  53. package/dist/client/messaging.js.map +1 -1
  54. package/dist/client/oauth-clients.d.ts +4 -0
  55. package/dist/client/oauth-clients.js.map +1 -1
  56. package/dist/client/oauth-protocols.d.ts +116 -0
  57. package/dist/client/oauth-protocols.js +54 -0
  58. package/dist/client/oauth-protocols.js.map +1 -0
  59. package/dist/client/oauth-providers.d.ts +4 -4
  60. package/dist/client/openfga.d.ts +90 -3
  61. package/dist/client/openfga.js +27 -1
  62. package/dist/client/openfga.js.map +1 -1
  63. package/dist/client/org-ldap-connections.d.ts +3 -0
  64. package/dist/client/org-ldap-connections.js.map +1 -1
  65. package/dist/client/organizations.d.ts +14 -0
  66. package/dist/client/organizations.js.map +1 -1
  67. package/dist/client/policy-bundles.d.ts +105 -0
  68. package/dist/client/policy-bundles.js +38 -0
  69. package/dist/client/policy-bundles.js.map +1 -0
  70. package/dist/client/resources.d.ts +1 -0
  71. package/dist/client/resources.js.map +1 -1
  72. package/dist/client/risk-containment.d.ts +244 -0
  73. package/dist/client/risk-containment.js +120 -0
  74. package/dist/client/risk-containment.js.map +1 -0
  75. package/dist/client/saml-idp.d.ts +183 -0
  76. package/dist/client/saml-idp.js +71 -0
  77. package/dist/client/saml-idp.js.map +1 -0
  78. package/dist/client/scim-provisioning.d.ts +100 -4
  79. package/dist/client/scim-provisioning.js +30 -0
  80. package/dist/client/scim-provisioning.js.map +1 -1
  81. package/dist/client/scim-tokens.d.ts +34 -0
  82. package/dist/client/scim-tokens.js +17 -0
  83. package/dist/client/scim-tokens.js.map +1 -1
  84. package/dist/client/service-connectors.d.ts +1 -1
  85. package/dist/client/ssf.d.ts +31 -1
  86. package/dist/client/ssf.js +17 -0
  87. package/dist/client/ssf.js.map +1 -1
  88. package/dist/client/users.d.ts +9 -0
  89. package/dist/client/users.js +9 -0
  90. package/dist/client/users.js.map +1 -1
  91. package/dist/client/vault.d.ts +54 -0
  92. package/dist/client/vault.js +30 -0
  93. package/dist/client/vault.js.map +1 -1
  94. package/dist/client/vc.d.ts +62 -2
  95. package/dist/client/vc.js +15 -0
  96. package/dist/client/vc.js.map +1 -1
  97. package/dist/client/workflows.d.ts +182 -3
  98. package/dist/client/workflows.js +34 -0
  99. package/dist/client/workflows.js.map +1 -1
  100. package/dist/index.d.ts +5 -2
  101. package/dist/index.js +6 -1
  102. package/dist/index.js.map +1 -1
  103. package/dist/oauth-resource.d.ts +30 -3
  104. package/dist/oauth-resource.js +43 -2
  105. package/dist/oauth-resource.js.map +1 -1
  106. package/dist/policy-bundle.d.ts +110 -0
  107. package/dist/policy-bundle.js +289 -0
  108. package/dist/policy-bundle.js.map +1 -0
  109. package/dist/txn-token.d.ts +36 -0
  110. package/dist/txn-token.js +30 -0
  111. package/dist/txn-token.js.map +1 -0
  112. package/dist/uma.d.ts +77 -0
  113. package/dist/uma.js +95 -0
  114. package/dist/uma.js.map +1 -0
  115. package/package.json +2 -2
@@ -10,6 +10,8 @@ export interface AppPreset {
10
10
  verified: boolean;
11
11
  /** The vendor SSO documentation the values come from. */
12
12
  source_url: string | null;
13
+ /** A private preset of this instance. */
14
+ custom?: boolean;
13
15
  params: Array<{
14
16
  key: string;
15
17
  label: string;
@@ -38,6 +40,20 @@ export interface InstalledApp {
38
40
  allowed_email_domains: string[];
39
41
  assignment: Required<AppAssignment>;
40
42
  }
43
+ export type AppRequestStatus = 'open' | 'building' | 'available' | 'declined';
44
+ export interface AppRequest {
45
+ object: 'app_request';
46
+ id: string;
47
+ name: string;
48
+ protocol: 'saml' | 'oidc';
49
+ docs_url: string | null;
50
+ note: string | null;
51
+ status: AppRequestStatus;
52
+ requested_by: string | null;
53
+ votes: number;
54
+ created_at: number;
55
+ updated_at: number;
56
+ }
41
57
  export interface InstallAppBody {
42
58
  params?: Record<string, string>;
43
59
  installed_id?: string;
@@ -48,9 +64,52 @@ export interface InstallAppBody {
48
64
  /** The app catalog: SAML and OpenID Connect presets, installs, and who may open each app. */
49
65
  export declare function appCatalogResource(request: RequestFn): {
50
66
  /** `GET /v1/app_catalog` — every preset with its protocol and parameters. */
51
- presets(): Promise<{
67
+ presets(query?: {
68
+ q?: string;
69
+ category?: string;
70
+ protocol?: "saml" | "oidc";
71
+ verified?: boolean;
72
+ limit?: number;
73
+ offset?: number;
74
+ }): Promise<{
52
75
  object: "list";
53
76
  data: AppPreset[];
77
+ total: number;
78
+ has_more: boolean;
79
+ }>;
80
+ /** `GET /v1/app_catalog/custom_presets` — this instance's private presets in portable form. */
81
+ customPresets(): Promise<{
82
+ object: "list";
83
+ data: Array<Record<string, unknown>>;
84
+ }>;
85
+ /** `POST /v1/app_catalog/custom_presets` — save (or replace) a private SAML preset. */
86
+ saveCustomPreset(preset: Record<string, unknown>): Promise<Record<string, unknown>>;
87
+ deleteCustomPreset(id: string): Promise<{
88
+ object: "app_custom_preset";
89
+ id: string;
90
+ deleted: true;
91
+ }>;
92
+ /** `GET /v1/app_catalog/requests` — apps people asked for, most wanted first. */
93
+ requests(status?: AppRequestStatus): Promise<{
94
+ object: "list";
95
+ data: AppRequest[];
96
+ }>;
97
+ /** `POST /v1/app_catalog/requests` — ask for an app; asking again for an open one adds a vote. */
98
+ requestApp(body: {
99
+ name: string;
100
+ protocol?: "saml" | "oidc";
101
+ docs_url?: string;
102
+ note?: string;
103
+ requested_by?: string;
104
+ }): Promise<AppRequest>;
105
+ updateRequest(id: string, body: {
106
+ status?: AppRequestStatus;
107
+ note?: string;
108
+ }): Promise<AppRequest>;
109
+ deleteRequest(id: string): Promise<{
110
+ object: "app_request";
111
+ id: string;
112
+ deleted: true;
54
113
  }>;
55
114
  /** `GET /v1/app_catalog/installed` */
56
115
  installed(): Promise<{
@@ -6,8 +6,38 @@ const request_1 = require("./request");
6
6
  function appCatalogResource(request) {
7
7
  return {
8
8
  /** `GET /v1/app_catalog` — every preset with its protocol and parameters. */
9
- presets() {
10
- return request({ method: 'GET', path: '/v1/app_catalog' });
9
+ presets(query = {}) {
10
+ const p = new URLSearchParams();
11
+ for (const [k, v] of Object.entries(query))
12
+ if (v !== undefined)
13
+ p.set(k, String(v));
14
+ const qs = p.toString();
15
+ return request({ method: 'GET', path: `/v1/app_catalog${qs ? `?${qs}` : ''}` });
16
+ },
17
+ /** `GET /v1/app_catalog/custom_presets` — this instance's private presets in portable form. */
18
+ customPresets() {
19
+ return request({ method: 'GET', path: '/v1/app_catalog/custom_presets' });
20
+ },
21
+ /** `POST /v1/app_catalog/custom_presets` — save (or replace) a private SAML preset. */
22
+ saveCustomPreset(preset) {
23
+ return request({ method: 'POST', path: '/v1/app_catalog/custom_presets', body: { preset } });
24
+ },
25
+ deleteCustomPreset(id) {
26
+ return request({ method: 'DELETE', path: `/v1/app_catalog/custom_presets/${(0, request_1.enc)(id)}` });
27
+ },
28
+ /** `GET /v1/app_catalog/requests` — apps people asked for, most wanted first. */
29
+ requests(status) {
30
+ return request({ method: 'GET', path: `/v1/app_catalog/requests${status ? `?status=${status}` : ''}` });
31
+ },
32
+ /** `POST /v1/app_catalog/requests` — ask for an app; asking again for an open one adds a vote. */
33
+ requestApp(body) {
34
+ return request({ method: 'POST', path: '/v1/app_catalog/requests', body });
35
+ },
36
+ updateRequest(id, body) {
37
+ return request({ method: 'PATCH', path: `/v1/app_catalog/requests/${(0, request_1.enc)(id)}`, body });
38
+ },
39
+ deleteRequest(id) {
40
+ return request({ method: 'DELETE', path: `/v1/app_catalog/requests/${(0, request_1.enc)(id)}` });
11
41
  },
12
42
  /** `GET /v1/app_catalog/installed` */
13
43
  installed() {
@@ -1 +1 @@
1
- {"version":3,"file":"app-catalog.js","sourceRoot":"","sources":["../../src/client/app-catalog.ts"],"names":[],"mappings":";;AAkDA,gDAuBC;AAzED,uCAAgD;AAiDhD,6FAA6F;AAC7F,SAAgB,kBAAkB,CAAC,OAAkB;IACnD,OAAO;QACL,6EAA6E;QAC7E,OAAO;YACL,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,sCAAsC;QACtC,SAAS;YACP,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,yGAAyG;QACzG,OAAO,CAAC,QAAgB,EAAE,OAAuB,EAAE,EAAE,cAAuB;YAC1E,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,uFAAuF;QACvF,MAAM,CAAC,EAAU,EAAE,IAA2E;YAC5F,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,6BAA6B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,6CAA6C;QAC7C,SAAS,CAAC,EAAU;YAClB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,6BAA6B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"app-catalog.js","sourceRoot":"","sources":["../../src/client/app-catalog.ts"],"names":[],"mappings":";;AAmEA,gDAmDC;AAtHD,uCAAgD;AAkEhD,6FAA6F;AAC7F,SAAgB,kBAAkB,CAAC,OAAkB;IACnD,OAAO;QACL,6EAA6E;QAC7E,OAAO,CAAC,QAA4H,EAAE;YACpI,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;YAChC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,IAAI,CAAC,KAAK,SAAS;oBAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACrF,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,+FAA+F;QAC/F,aAAa;YACX,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gCAAgC,EAAE,CAAC,CAAC;QAC5E,CAAC;QACD,uFAAuF;QACvF,gBAAgB,CAAC,MAA+B;YAC9C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gCAAgC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/F,CAAC;QACD,kBAAkB,CAAC,EAAU;YAC3B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,kCAAkC,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,iFAAiF;QACjF,QAAQ,CAAC,MAAyB;YAChC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1G,CAAC;QACD,kGAAkG;QAClG,UAAU,CAAC,IAA2G;YACpH,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,aAAa,CAAC,EAAU,EAAE,IAAkD;YAC1E,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,4BAA4B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,aAAa,CAAC,EAAU;YACtB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,4BAA4B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,sCAAsC;QACtC,SAAS;YACP,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,yGAAyG;QACzG,OAAO,CAAC,QAAgB,EAAE,OAAuB,EAAE,EAAE,cAAuB;YAC1E,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,mBAAmB,IAAA,aAAG,EAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;QAC7G,CAAC;QACD,uFAAuF;QACvF,MAAM,CAAC,EAAU,EAAE,IAA2E;YAC5F,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,6BAA6B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,CAAC;QACD,6CAA6C;QAC7C,SAAS,CAAC,EAAU;YAClB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,6BAA6B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACrF,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,154 @@
1
+ import { type RequestFn } from './request';
2
+ /**
3
+ * The authorization decision log: every ABAC, AuthZEN, FGA-check and
4
+ * access-policy decision can be recorded with its (redacted) input, result, the
5
+ * policy revision in force and latency — sampled, shipped as `authz.decision`
6
+ * events to your log streams, and queryable here.
7
+ */
8
+ export type DecisionSource = 'abac' | 'authzen' | 'fga' | 'access_policy' | 'mcp_gateway';
9
+ export interface AuthzDecision {
10
+ object: 'authz_decision';
11
+ id: string;
12
+ source: DecisionSource;
13
+ decision: 'allow' | 'deny';
14
+ /** `Type::id` (ABAC / AuthZEN), the FGA user, or the user id (access policies). */
15
+ principal: string | null;
16
+ /** The action, the FGA relation, or the access-policy stage. */
17
+ action: string | null;
18
+ resource: string | null;
19
+ /** The request as kept by `input_mode`; null when capture keeps none. */
20
+ input: Record<string, unknown> | null;
21
+ /** Reasons (policy names), matched policies, error counts, FGA `allowed` / `cached`. */
22
+ result: Record<string, unknown>;
23
+ /** The signed-bundle revision in force (`rev_…`); access policies carry an `ap_…` digest. */
24
+ policy_revision: string | null;
25
+ /** The exact policy versions or FGA model that evaluated. */
26
+ policy_version: Record<string, unknown> | null;
27
+ latency_ms: number;
28
+ /** The probability this decision was kept at; divide counts by it for the true volume. */
29
+ sample_rate: number;
30
+ actor_id: string | null;
31
+ created_at: number;
32
+ }
33
+ export interface ListAuthzDecisionsParams {
34
+ source?: DecisionSource;
35
+ decision?: 'allow' | 'deny';
36
+ principal?: string;
37
+ action?: string;
38
+ resource?: string;
39
+ policy_revision?: string;
40
+ /** ISO 8601 or epoch milliseconds. */
41
+ since?: string | number;
42
+ until?: string | number;
43
+ /** 1–200; default 50. */
44
+ limit?: number;
45
+ starting_after?: string;
46
+ }
47
+ export interface AuthzDecisionPage {
48
+ object: 'list';
49
+ data: AuthzDecision[];
50
+ has_more: boolean;
51
+ /** Pass as `starting_after` for the next page. */
52
+ next_cursor: string | null;
53
+ }
54
+ export interface AuthzDecisionStats {
55
+ object: 'authz_decision_stats';
56
+ since: number;
57
+ until: number;
58
+ recorded: number;
59
+ /** Recorded decisions scaled back up by their sample rates. */
60
+ estimated_total: number;
61
+ by_source: Record<string, {
62
+ allow: number;
63
+ deny: number;
64
+ estimated_allow: number;
65
+ estimated_deny: number;
66
+ }>;
67
+ latency_ms: {
68
+ p50: number | null;
69
+ p95: number | null;
70
+ p99: number | null;
71
+ max: number | null;
72
+ };
73
+ }
74
+ export interface AuthzDecisionSettings {
75
+ object: 'authz_decision_settings';
76
+ /** Record decisions. Off by default. */
77
+ enabled: boolean;
78
+ /** Probability (0–1) an allow is recorded. */
79
+ sample_rate_allow: number;
80
+ /** Probability (0–1) a deny is recorded. */
81
+ sample_rate_deny: number;
82
+ /** `ids` keeps identifiers only; `full` keeps the request minus `redact`; `none` keeps no input. */
83
+ input_mode: 'ids' | 'full' | 'none';
84
+ /** Dotted paths blanked in `full` mode; `*` matches one segment. */
85
+ redact: string[];
86
+ /** Also emit each recorded decision as an `authz.decision` event. */
87
+ ship_to_events: boolean;
88
+ /** Days to keep decisions; null keeps them. */
89
+ retention_days: number | null;
90
+ }
91
+ export type UpdateAuthzDecisionSettingsBody = Partial<Omit<AuthzDecisionSettings, 'object'>>;
92
+ export declare function authzDecisionsResource(request: RequestFn): {
93
+ /** Query the decision log, newest first. */
94
+ list(params?: ListAuthzDecisionsParams): Promise<AuthzDecisionPage>;
95
+ /** Follow `next_cursor` and yield every matching decision. */
96
+ iterate(params?: Omit<ListAuthzDecisionsParams, "starting_after">): AsyncGenerator<AuthzDecision>;
97
+ get(id: string): Promise<AuthzDecision>;
98
+ /** Counts per engine and outcome, sampling-corrected, with latency percentiles (the last 24 hours by default). */
99
+ stats(params?: {
100
+ since?: string | number;
101
+ until?: string | number;
102
+ }): Promise<AuthzDecisionStats>;
103
+ /** A local PDP ships a batch of decisions (max 500) and checks in; also its heartbeat. */
104
+ ingest(body: {
105
+ pdp: {
106
+ id: string;
107
+ name?: string;
108
+ version?: string;
109
+ bundle_revision?: string;
110
+ };
111
+ decisions?: Array<{
112
+ decision: "allow" | "deny";
113
+ principal?: string;
114
+ action?: string;
115
+ resource?: string;
116
+ input?: Record<string, unknown>;
117
+ result?: Record<string, unknown>;
118
+ latency_ms?: number;
119
+ }>;
120
+ }): Promise<{
121
+ object: "authz_decision_ingest";
122
+ accepted: number;
123
+ enabled: boolean;
124
+ pdp: AuthzPdp;
125
+ }>;
126
+ /** The fleet of local PDPs that have checked in. */
127
+ pdps: {
128
+ list(): Promise<{
129
+ object: "list";
130
+ data: AuthzPdp[];
131
+ has_more: boolean;
132
+ }>;
133
+ remove(id: string): Promise<{
134
+ object: "authz_pdp";
135
+ id: string;
136
+ deleted: boolean;
137
+ }>;
138
+ };
139
+ settings: {
140
+ get(): Promise<AuthzDecisionSettings>;
141
+ /** Fields you omit keep their value. */
142
+ update(body: UpdateAuthzDecisionSettingsBody): Promise<AuthzDecisionSettings>;
143
+ };
144
+ };
145
+ export interface AuthzPdp {
146
+ object: 'authz_pdp';
147
+ id: string;
148
+ name: string | null;
149
+ version: string | null;
150
+ bundle_revision: string | null;
151
+ decisions_total: number;
152
+ first_seen_at: number;
153
+ last_seen_at: number;
154
+ }
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.authzDecisionsResource = authzDecisionsResource;
4
+ const request_1 = require("./request");
5
+ function authzDecisionsResource(request) {
6
+ return {
7
+ /** Query the decision log, newest first. */
8
+ list(params = {}) {
9
+ return request({ method: 'GET', path: '/v1/authz_decisions', query: { ...params } });
10
+ },
11
+ /** Follow `next_cursor` and yield every matching decision. */
12
+ async *iterate(params = {}) {
13
+ let after;
14
+ for (;;) {
15
+ const page = await this.list({ ...params, starting_after: after });
16
+ yield* page.data;
17
+ if (!page.has_more || !page.next_cursor)
18
+ return;
19
+ after = page.next_cursor;
20
+ }
21
+ },
22
+ get(id) {
23
+ return request({ method: 'GET', path: `/v1/authz_decisions/${(0, request_1.enc)(id)}` });
24
+ },
25
+ /** Counts per engine and outcome, sampling-corrected, with latency percentiles (the last 24 hours by default). */
26
+ stats(params = {}) {
27
+ return request({ method: 'GET', path: '/v1/authz_decisions/stats', query: { ...params } });
28
+ },
29
+ /** A local PDP ships a batch of decisions (max 500) and checks in; also its heartbeat. */
30
+ ingest(body) {
31
+ return request({ method: 'POST', path: '/v1/authz_decisions/ingest', body });
32
+ },
33
+ /** The fleet of local PDPs that have checked in. */
34
+ pdps: {
35
+ list() {
36
+ return request({ method: 'GET', path: '/v1/authz_pdps' });
37
+ },
38
+ remove(id) {
39
+ return request({ method: 'DELETE', path: `/v1/authz_pdps/${(0, request_1.enc)(id)}` });
40
+ },
41
+ },
42
+ settings: {
43
+ get() {
44
+ return request({ method: 'GET', path: '/v1/authz_decision_settings' });
45
+ },
46
+ /** Fields you omit keep their value. */
47
+ update(body) {
48
+ return request({ method: 'PUT', path: '/v1/authz_decision_settings', body });
49
+ },
50
+ },
51
+ };
52
+ }
53
+ //# sourceMappingURL=authz-decisions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authz-decisions.js","sourceRoot":"","sources":["../../src/client/authz-decisions.ts"],"names":[],"mappings":";;AA0FA,wDA8CC;AAxID,uCAAgD;AA0FhD,SAAgB,sBAAsB,CAAC,OAAkB;IACvD,OAAO;QACL,4CAA4C;QAC5C,IAAI,CAAC,SAAmC,EAAE;YACxC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,8DAA8D;QAC9D,KAAK,CAAC,CAAC,OAAO,CAAC,SAA2D,EAAE;YAC1E,IAAI,KAAyB,CAAC;YAC9B,SAAS,CAAC;gBACR,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnE,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW;oBAAE,OAAO;gBAChD,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;YAC3B,CAAC;QACH,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,kHAAkH;QAClH,KAAK,CAAC,SAA+D,EAAE;YACrE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,EAAE,GAAG,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,0FAA0F;QAC1F,MAAM,CAAC,IAA2R;YAChS,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/E,CAAC;QACD,oDAAoD;QACpD,IAAI,EAAE;YACJ,IAAI;gBACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,CAAC,EAAU;gBACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1E,CAAC;SACF;QACD,QAAQ,EAAE;YACR,GAAG;gBACD,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE,CAAC,CAAC;YACzE,CAAC;YACD,wCAAwC;YACxC,MAAM,CAAC,IAAqC;gBAC1C,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,6BAA6B,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/E,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}