@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
@@ -16,6 +16,17 @@ export interface OpenFgaTupleKey {
16
16
  user: string;
17
17
  relation: string;
18
18
  object: string;
19
+ /** A model condition the tuple is bound to. */
20
+ condition?: {
21
+ name: string;
22
+ context?: Record<string, unknown>;
23
+ };
24
+ }
25
+ /** OpenFGA's `consistency` enum plus Atlas's consistency token (see ListUsers/Check docs). */
26
+ export interface OpenFgaConsistencyOptions {
27
+ consistency?: 'UNSPECIFIED' | 'MINIMIZE_LATENCY' | 'HIGHER_CONSISTENCY';
28
+ /** A token from a write; the read reflects at least that write. Also sent as the `Atlas-Consistency-Token` header. */
29
+ consistency_token?: string;
19
30
  }
20
31
  /** Contextual tuples: either the OpenFGA `{ tuple_keys }` wrapper or a bare array. */
21
32
  export type OpenFgaContextualTuples = {
@@ -38,18 +49,21 @@ export interface WriteOpenFgaModelBody {
38
49
  dsl?: string;
39
50
  [key: string]: unknown;
40
51
  }
41
- export interface OpenFgaCheckBody {
52
+ export interface OpenFgaCheckBody extends OpenFgaConsistencyOptions {
42
53
  tuple_key: OpenFgaTupleKey;
43
54
  authorization_model_id?: string;
44
55
  contextual_tuples?: OpenFgaContextualTuples;
56
+ /** Values for condition parameters. */
57
+ context?: Record<string, unknown>;
45
58
  }
46
59
  export interface OpenFgaBatchCheckItem {
47
60
  tuple_key: OpenFgaTupleKey;
48
61
  /** Keys the result; defaults to the item's index. */
49
62
  correlation_id?: string;
50
63
  contextual_tuples?: OpenFgaContextualTuples;
64
+ context?: Record<string, unknown>;
51
65
  }
52
- export interface OpenFgaBatchCheckBody {
66
+ export interface OpenFgaBatchCheckBody extends OpenFgaConsistencyOptions {
53
67
  /** 1–100 checks. */
54
68
  checks: OpenFgaBatchCheckItem[];
55
69
  authorization_model_id?: string;
@@ -61,13 +75,74 @@ export interface OpenFgaExpandBody {
61
75
  };
62
76
  authorization_model_id?: string;
63
77
  }
64
- export interface OpenFgaListObjectsBody {
78
+ export interface OpenFgaListObjectsBody extends OpenFgaConsistencyOptions {
65
79
  /** Object type, e.g. `document`. */
66
80
  type: string;
67
81
  relation: string;
68
82
  user: string;
69
83
  authorization_model_id?: string;
70
84
  contextual_tuples?: OpenFgaContextualTuples;
85
+ context?: Record<string, unknown>;
86
+ }
87
+ export interface OpenFgaListUsersBody extends OpenFgaConsistencyOptions {
88
+ object: {
89
+ type: string;
90
+ id: string;
91
+ };
92
+ relation: string;
93
+ /** Exactly one filter; add `relation` to get usersets. */
94
+ user_filters: [{
95
+ type: string;
96
+ relation?: string;
97
+ }];
98
+ authorization_model_id?: string;
99
+ contextual_tuples?: OpenFgaContextualTuples;
100
+ context?: Record<string, unknown>;
101
+ /** Atlas extension: 1–1000, default 1000. */
102
+ page_size?: number;
103
+ /** Atlas extension: the previous page's `continuation_token`. */
104
+ continuation_token?: string;
105
+ }
106
+ /** One listed user: a person/thing, a userset, or the public wildcard. */
107
+ export type OpenFgaListedUser = {
108
+ object: {
109
+ type: string;
110
+ id: string;
111
+ };
112
+ } | {
113
+ userset: {
114
+ type: string;
115
+ id: string;
116
+ relation: string;
117
+ };
118
+ } | {
119
+ wildcard: {
120
+ type: string;
121
+ };
122
+ };
123
+ export interface OpenFgaListUsersResult {
124
+ users: OpenFgaListedUser[];
125
+ excluded_users: Array<{
126
+ object: {
127
+ type: string;
128
+ id: string;
129
+ };
130
+ }>;
131
+ /** Empty on the last page. */
132
+ continuation_token: string;
133
+ }
134
+ export interface OpenFgaReadChangesParams {
135
+ type?: string;
136
+ /** 1–100, default 50. */
137
+ page_size?: number;
138
+ continuation_token?: string;
139
+ /** RFC 3339. */
140
+ start_time?: string;
141
+ }
142
+ export interface OpenFgaTupleChange {
143
+ tuple_key: OpenFgaTupleKey;
144
+ operation: 'TUPLE_OPERATION_WRITE' | 'TUPLE_OPERATION_DELETE';
145
+ timestamp: string;
71
146
  }
72
147
  export interface OpenFgaReadBody {
73
148
  /** Optional filter; `object` may be a full `type:id` or a bare `type:` prefix. */
@@ -128,6 +203,18 @@ export declare function openfgaResource(request: RequestFn): {
128
203
  listObjects(store: string, body: OpenFgaListObjectsBody): Promise<{
129
204
  objects: string[];
130
205
  }>;
206
+ /**
207
+ * Who has `relation` on `object` (OpenFGA ListUsers): users, usersets and the
208
+ * wildcard with `excluded_users`. One page — see {@link listAllUsers}.
209
+ */
210
+ listUsers(store: string, body: OpenFgaListUsersBody): Promise<OpenFgaListUsersResult>;
211
+ /** {@link listUsers} following `continuation_token` until every page is collected. */
212
+ listAllUsers(store: string, body: OpenFgaListUsersBody): Promise<OpenFgaListUsersResult>;
213
+ /** The tuple change log (OpenFGA ReadChanges); the token also resumes after the last page. */
214
+ readChanges(store: string, params?: OpenFgaReadChangesParams): Promise<{
215
+ changes: OpenFgaTupleChange[];
216
+ continuation_token: string;
217
+ }>;
131
218
  read(store: string, body?: OpenFgaReadBody): Promise<{
132
219
  tuples: OpenFgaTuple[];
133
220
  continuation_token: string;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.openfgaResource = openfgaResource;
4
4
  const request_1 = require("./request");
5
5
  function openfgaResource(request) {
6
- return {
6
+ const api = {
7
7
  stores: {
8
8
  list() {
9
9
  return request({ method: 'GET', path: '/v1/openfga/stores' });
@@ -60,6 +60,31 @@ function openfgaResource(request) {
60
60
  body,
61
61
  });
62
62
  },
63
+ /**
64
+ * Who has `relation` on `object` (OpenFGA ListUsers): users, usersets and the
65
+ * wildcard with `excluded_users`. One page — see {@link listAllUsers}.
66
+ */
67
+ listUsers(store, body) {
68
+ return request({ method: 'POST', path: `/v1/openfga/stores/${(0, request_1.enc)(store)}/list-users`, body });
69
+ },
70
+ /** {@link listUsers} following `continuation_token` until every page is collected. */
71
+ async listAllUsers(store, body) {
72
+ let page = await api.listUsers(store, body);
73
+ const users = [...page.users];
74
+ while (page.continuation_token) {
75
+ page = await api.listUsers(store, { ...body, continuation_token: page.continuation_token });
76
+ users.push(...page.users);
77
+ }
78
+ return { ...page, users };
79
+ },
80
+ /** The tuple change log (OpenFGA ReadChanges); the token also resumes after the last page. */
81
+ readChanges(store, params = {}) {
82
+ return request({
83
+ method: 'GET',
84
+ path: `/v1/openfga/stores/${(0, request_1.enc)(store)}/changes`,
85
+ query: { ...params },
86
+ });
87
+ },
63
88
  read(store, body = {}) {
64
89
  return request({ method: 'POST', path: `/v1/openfga/stores/${(0, request_1.enc)(store)}/read`, body });
65
90
  },
@@ -68,5 +93,6 @@ function openfgaResource(request) {
68
93
  return request({ method: 'POST', path: `/v1/openfga/stores/${(0, request_1.enc)(store)}/write`, body });
69
94
  },
70
95
  };
96
+ return api;
71
97
  }
72
98
  //# sourceMappingURL=openfga.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openfga.js","sourceRoot":"","sources":["../../src/client/openfga.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openfga.js","sourceRoot":"","sources":["../../src/client/openfga.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import { type RequestFn } from './request';
2
+ /**
3
+ * Signed policy bundles: the instance's ABAC policies and FGA authorization
4
+ * models as one versioned tar.gz with a manifest of file digests, signed with the
5
+ * instance signing key (detached JWS). Export, verify, and import with a dry-run
6
+ * diff. To check a bundle WITHOUT calling Atlas, use `verifyPolicyBundle`.
7
+ */
8
+ export interface PolicyBundle {
9
+ object: 'policy_bundle';
10
+ /** A digest of the bundle CONTENT (`rev_…`): the same policy has the same revision everywhere. */
11
+ revision: string;
12
+ sha256: string;
13
+ size: number;
14
+ key_id: string;
15
+ algorithm: 'RS256' | 'ES256';
16
+ /** Detached compact JWS (`header..signature`) over the archive bytes. */
17
+ signature: string;
18
+ origin: 'export' | 'import';
19
+ manifest: Record<string, unknown>;
20
+ /** The tar.gz, base64. Present on export and get; omitted from lists. */
21
+ bundle?: string;
22
+ media_type?: 'application/gzip';
23
+ created_at: number;
24
+ }
25
+ export interface PolicyBundleUpload {
26
+ /** The tar.gz, base64 (a `Uint8Array` is encoded for you). */
27
+ bundle: string | Uint8Array;
28
+ signature: string;
29
+ /** Public keys to trust in addition to this instance's, e.g. the staging instance when promoting to production. */
30
+ trusted_jwks?: {
31
+ keys: Array<Record<string, unknown>>;
32
+ };
33
+ }
34
+ export interface PolicyBundleVerification {
35
+ object: 'policy_bundle_verification';
36
+ /** Signature AND integrity both check out. */
37
+ valid: boolean;
38
+ signature: {
39
+ valid: boolean;
40
+ key_id: string | null;
41
+ algorithm: string | null;
42
+ error?: string;
43
+ };
44
+ integrity: {
45
+ valid: boolean;
46
+ code?: string;
47
+ error?: string;
48
+ };
49
+ revision: string | null;
50
+ manifest: Record<string, unknown> | null;
51
+ }
52
+ export interface PolicyBundleDiffSection {
53
+ create: string[];
54
+ update: Array<{
55
+ name: string;
56
+ changed: string[];
57
+ }>;
58
+ /** On the instance, absent from the bundle. ABAC policies are deleted only with `prune`; FGA stores never. */
59
+ absent: string[];
60
+ unchanged: number;
61
+ }
62
+ export interface PolicyBundleDiff {
63
+ abac_policies: PolicyBundleDiffSection;
64
+ fga_stores: PolicyBundleDiffSection;
65
+ abac_templates: PolicyBundleDiffSection;
66
+ abac_links: PolicyBundleDiffSection;
67
+ /** `absent`: the instance has a schema and the bundle does not (removed only with `prune`). */
68
+ abac_schema: 'create' | 'update' | 'absent' | 'unchanged';
69
+ identical: boolean;
70
+ }
71
+ export interface PolicyBundleImport {
72
+ object: 'policy_bundle_import';
73
+ dry_run: boolean;
74
+ applied: boolean;
75
+ prune: boolean;
76
+ revision: string;
77
+ diff: PolicyBundleDiff;
78
+ }
79
+ export declare function policyBundlesResource(request: RequestFn): {
80
+ /** The stored bundles, newest first (without archives). */
81
+ list(): Promise<{
82
+ object: "list";
83
+ data: PolicyBundle[];
84
+ has_more: boolean;
85
+ }>;
86
+ /** The revision the instance policy is at right now — compare with a deployed bundle's to detect drift. */
87
+ current(): Promise<{
88
+ object: "policy_bundle_revision";
89
+ revision: string;
90
+ }>;
91
+ /** Export the current policy as a signed bundle. */
92
+ export(): Promise<PolicyBundle>;
93
+ get(revision: string): Promise<PolicyBundle>;
94
+ /** Check a bundle's signature and integrity on Atlas. */
95
+ verify(body: PolicyBundleUpload): Promise<PolicyBundleVerification>;
96
+ /**
97
+ * Import a signed bundle. `dryRun` returns what would change and applies
98
+ * nothing; a real import applies everything in one transaction. A bundle whose
99
+ * signature or integrity fails is refused with 422 before anything changes.
100
+ */
101
+ import(body: PolicyBundleUpload & {
102
+ dry_run?: boolean;
103
+ prune?: boolean;
104
+ }): Promise<PolicyBundleImport>;
105
+ };
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.policyBundlesResource = policyBundlesResource;
4
+ const request_1 = require("./request");
5
+ const toBase64 = (b) => typeof b === 'string' ? b : btoa(Array.from(b, (c) => String.fromCharCode(c)).join(''));
6
+ function policyBundlesResource(request) {
7
+ const upload = (u) => ({ ...u, bundle: toBase64(u.bundle) });
8
+ return {
9
+ /** The stored bundles, newest first (without archives). */
10
+ list() {
11
+ return request({ method: 'GET', path: '/v1/policy_bundles' });
12
+ },
13
+ /** The revision the instance policy is at right now — compare with a deployed bundle's to detect drift. */
14
+ current() {
15
+ return request({ method: 'GET', path: '/v1/policy_bundles/current' });
16
+ },
17
+ /** Export the current policy as a signed bundle. */
18
+ export() {
19
+ return request({ method: 'POST', path: '/v1/policy_bundles' });
20
+ },
21
+ get(revision) {
22
+ return request({ method: 'GET', path: `/v1/policy_bundles/${(0, request_1.enc)(revision)}` });
23
+ },
24
+ /** Check a bundle's signature and integrity on Atlas. */
25
+ verify(body) {
26
+ return request({ method: 'POST', path: '/v1/policy_bundles/verify', body: upload(body) });
27
+ },
28
+ /**
29
+ * Import a signed bundle. `dryRun` returns what would change and applies
30
+ * nothing; a real import applies everything in one transaction. A bundle whose
31
+ * signature or integrity fails is refused with 422 before anything changes.
32
+ */
33
+ import(body) {
34
+ return request({ method: 'POST', path: '/v1/policy_bundles/import', body: upload(body) });
35
+ },
36
+ };
37
+ }
38
+ //# sourceMappingURL=policy-bundles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-bundles.js","sourceRoot":"","sources":["../../src/client/policy-bundles.ts"],"names":[],"mappings":";;AA2EA,sDA+BC;AA1GD,uCAAgD;AAwEhD,MAAM,QAAQ,GAAG,CAAC,CAAsB,EAAU,EAAE,CAClD,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AAE1F,SAAgB,qBAAqB,CAAC,OAAkB;IACtD,MAAM,MAAM,GAAG,CAAC,CAAqB,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjF,OAAO;QACL,2DAA2D;QAC3D,IAAI;YACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAChE,CAAC;QACD,2GAA2G;QAC3G,OAAO;YACL,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,oDAAoD;QACpD,MAAM;YACJ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,GAAG,CAAC,QAAgB;YAClB,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,sBAAsB,IAAA,aAAG,EAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,yDAAyD;QACzD,MAAM,CAAC,IAAwB;YAC7B,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD;;;;WAIG;QACH,MAAM,CAAC,IAAiE;YACtE,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -145,5 +145,6 @@ export declare function resourcesResource(request: RequestFn): {
145
145
  type?: string;
146
146
  groups?: string[];
147
147
  limit?: number;
148
+ starting_after?: string;
148
149
  }): Promise<ListPage<Resource>>;
149
150
  };
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/client/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/client/resources.ts"],"names":[],"mappings":"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"}
@@ -51,7 +51,8 @@ export interface SsfEventRecord {
51
51
  delivered_at: number | null;
52
52
  created_at: number;
53
53
  }
54
- export type SsfReceiverAction = 'revoke_sessions' | 'ban' | 'ignore';
54
+ /** `sync_posture` (device-compliance-change only) records the device's compliance in Atlas device posture and nothing else. */
55
+ export type SsfReceiverAction = 'revoke_sessions' | 'refresh_claims' | 'ban' | 'sync_posture' | 'ignore';
55
56
  export interface SsfReceiver {
56
57
  object: 'ssf_receiver';
57
58
  id: string;
@@ -1 +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"}
1
+ {"version":3,"file":"ssf.js","sourceRoot":"","sources":["../../src/client/ssf.ts"],"names":[],"mappings":";;AA6FA,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"}
@@ -18,6 +18,8 @@ export interface VcCredentialType {
18
18
  namespace: string | null;
19
19
  /** mdoc: PEM IACA roots a presentation must chain to. */
20
20
  iaca_roots: string[];
21
+ /** mdoc: issuer revocation checks (certificate CRL / OCSP, MSO status list). */
22
+ revocation_policy: VcRevocationPolicy;
21
23
  /** mdoc: PEM Document Signer chain published as x5chain. */
22
24
  signer_chain: string[];
23
25
  name: string;
@@ -27,6 +29,7 @@ export interface VcCredentialType {
27
29
  created_at: number;
28
30
  }
29
31
  export type VcFormat = 'dc+sd-jwt' | 'mso_mdoc';
32
+ export type VcRevocationPolicy = 'off' | 'best_effort' | 'required';
30
33
  export interface CreateVcCredentialTypeBody {
31
34
  /** The vct, or the docType for mso_mdoc (for example org.iso.18013.5.1.mDL). */
32
35
  vct: string;
@@ -35,6 +38,8 @@ export interface CreateVcCredentialTypeBody {
35
38
  namespace?: string;
36
39
  /** mso_mdoc: PEM IACA roots (ISO 18013-5 Annex B); with roots set only a certificate chain is accepted. */
37
40
  iaca_roots?: string[];
41
+ /** mso_mdoc: off, best_effort (default) or required. */
42
+ revocation_policy?: VcRevocationPolicy;
38
43
  /** mso_mdoc: PEM Document Signer certificate (then intermediates) for the instance's mdoc signing key. */
39
44
  signer_chain?: string[];
40
45
  name: string;
@@ -69,6 +74,7 @@ export interface VcPresentationRequest {
69
74
  vct: string;
70
75
  format: VcFormat;
71
76
  iaca_roots: string[];
77
+ revocation_policy: VcRevocationPolicy | null;
72
78
  claims: string[];
73
79
  status: 'pending' | 'verified' | 'failed';
74
80
  result: {
@@ -114,6 +120,8 @@ export declare function vcResource(request: RequestFn): {
114
120
  format?: VcFormat;
115
121
  /** mso_mdoc: PEM IACA roots for this request. */
116
122
  iaca_roots?: string[];
123
+ /** mso_mdoc: overrides the credential type's revocation policy. */
124
+ revocation_policy?: VcRevocationPolicy;
117
125
  claims?: string[];
118
126
  trusted_issuers?: Array<{
119
127
  issuer: string;
@@ -1 +1 @@
1
- {"version":3,"file":"vc.js","sourceRoot":"","sources":["../../src/client/vc.ts"],"names":[],"mappings":";;AAyFA,gCA4CC;AArID,uCAAgD;AAwFhD,4GAA4G;AAC5G,SAAgB,UAAU,CAAC,OAAkB;IAC3C,OAAO;QACL,eAAe,EAAE;YACf,IAAI;gBACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,CAAC,IAAgC;gBACrC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,GAAG,CAAC,EAAU;gBACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,CAAC,EAAU;gBACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,2BAA2B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACnF,CAAC;SACF;QACD,WAAW,CAAC,IAAoG;YAC9G,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,WAAW,EAAE;YACX,IAAI,CAAC,QAA8B,EAAE;gBACnC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,MAAM,CAAC,EAAU;gBACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;YACnF,CAAC;SACF;QACD,oBAAoB,EAAE;YACpB,MAAM,CAAC,IAQN;gBACC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,GAAG,CAAC,EAAU;gBACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gCAAgC,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrF,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"vc.js","sourceRoot":"","sources":["../../src/client/vc.ts"],"names":[],"mappings":";;AA+FA,gCA8CC;AA7ID,uCAAgD;AA8FhD,4GAA4G;AAC5G,SAAgB,UAAU,CAAC,OAAkB;IAC3C,OAAO;QACL,eAAe,EAAE;YACf,IAAI;gBACF,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,CAAC,IAAgC;gBACrC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAyB,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5E,CAAC;YACD,GAAG,CAAC,EAAU;gBACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,2BAA2B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,CAAC,EAAU;gBACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,2BAA2B,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACnF,CAAC;SACF;QACD,WAAW,CAAC,IAAoG;YAC9G,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,WAAW,EAAE;YACX,IAAI,CAAC,QAA8B,EAAE;gBACnC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC;YACrF,CAAC;YACD,MAAM,CAAC,EAAU;gBACf,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,IAAA,aAAG,EAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;YACnF,CAAC;SACF;QACD,oBAAoB,EAAE;YACpB,MAAM,CAAC,IAUN;gBACC,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC,CAAC;YACjF,CAAC;YACD,GAAG,CAAC,EAAU;gBACZ,OAAO,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,gCAAgC,IAAA,aAAG,EAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrF,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -16,6 +16,7 @@ export type { LegacyIssuer, LegacyIssuerKind } from './legacy-issuers';
16
16
  export * from './legacy-issuer-presets';
17
17
  export * from './framework-sessions';
18
18
  export * from './framework-bridge';
19
+ export * from './policy-bundle';
19
20
  export { BACKCHANNEL_LOGOUT_EVENT, LOGOUT_TOKEN_CLOCK_SKEW_SECONDS, LOGOUT_TOKEN_MAX_AGE_SECONDS, LogoutTokenVerifier, memoryLogoutReplayStore, verifyLogoutToken, } from './logout-token';
20
21
  export type { LogoutReplayStore, LogoutTokenCheckOptions, LogoutTokenClaims, LogoutTokenResult, LogoutTokenVerifierOptions, } from './logout-token';
21
22
  export { expressBackchannelLogout, fastifyBackchannelLogout, fastifyBackchannelLogoutPlugin, fetchBackchannelLogout, handleBackchannelLogout, nextBackchannelLogout, readLogoutToken, } from './backchannel-handlers';
@@ -40,3 +41,4 @@ export type { RequirePcaOptions, PcaGuardResult, PcaRequestLike, PcaStateStore }
40
41
  export { ACCESS_TOKEN_CLOCK_SKEW_SECONDS, DPOP_PROOF_MAX_AGE_SECONDS, buildWwwAuthenticate, createAccessTokenVerifier, createIntrospector, hmacDpopNonceSource, memoryDpopNonceSource, memoryDpopReplayStore, protectedResourceMetadata, protectedResourceMetadataPath, verifyAccessToken, } from './oauth-resource';
41
42
  export type { AccessTokenClaims, AccessTokenErrorCode, AccessTokenResult, AccessTokenVerifierOptions, DpopNonceSource, DpopReplayStore, IntrospectionOptions, ResourceRequestLike, } from './oauth-resource';
42
43
  export * from './legacy-verify';
44
+ export * from './uma';
package/dist/index.js CHANGED
@@ -49,6 +49,8 @@ __exportStar(require("./legacy-issuer-presets"), exports);
49
49
  __exportStar(require("./framework-sessions"), exports);
50
50
  // …and their bridge presets + token extractors (registers the presets on load).
51
51
  __exportStar(require("./framework-bridge"), exports);
52
+ // Verify a signed policy bundle offline (no call to Atlas).
53
+ __exportStar(require("./policy-bundle"), exports);
52
54
  // OIDC Back-Channel Logout: verify the logout_token Atlas POSTs to your app.
53
55
  var logout_token_1 = require("./logout-token");
54
56
  Object.defineProperty(exports, "BACKCHANNEL_LOGOUT_EVENT", { enumerable: true, get: function () { return logout_token_1.BACKCHANNEL_LOGOUT_EVENT; } });
@@ -131,4 +133,5 @@ Object.defineProperty(exports, "protectedResourceMetadata", { enumerable: true,
131
133
  Object.defineProperty(exports, "protectedResourceMetadataPath", { enumerable: true, get: function () { return oauth_resource_1.protectedResourceMetadataPath; } });
132
134
  Object.defineProperty(exports, "verifyAccessToken", { enumerable: true, get: function () { return oauth_resource_1.verifyAccessToken; } });
133
135
  __exportStar(require("./legacy-verify"), exports);
136
+ __exportStar(require("./uma"), exports);
134
137
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ import { type JWK } from 'jose';
2
+ /**
3
+ * Verify a signed policy bundle OFFLINE — no call to Atlas. This is what an edge
4
+ * PDP, a CI job or an air-gapped service runs before it trusts a bundle:
5
+ *
6
+ * 1. the detached JWS over the archive bytes verifies against a public key you
7
+ * trust (the instance JWKS you fetched or pinned; RS256 / ES256 only),
8
+ * 2. the archive is a well-formed tar.gz of bounded size with no unsafe paths,
9
+ * 3. every file matches its SHA-256 in the manifest, nothing is added or
10
+ * missing, and the revision recomputed from the content equals the manifest's.
11
+ *
12
+ * Only if all three hold does it return the policies and models. Runs anywhere
13
+ * with `fetch`-era Web APIs: Node 18+, Deno, Bun, edge workers (it uses
14
+ * `DecompressionStream` and `crypto.subtle`).
15
+ */
16
+ export type PolicyBundleErrorCode = 'invalid_signature' | 'unknown_key' | 'invalid_archive' | 'invalid_manifest' | 'digest_mismatch' | 'unlisted_file' | 'missing_file' | 'revision_mismatch' | 'invalid_content' | 'unsupported_version' | 'unexpected_revision';
17
+ export declare class PolicyBundleError extends Error {
18
+ readonly code: PolicyBundleErrorCode;
19
+ constructor(code: PolicyBundleErrorCode, message: string);
20
+ }
21
+ export interface BundleAbacPolicy {
22
+ name: string;
23
+ description: string | null;
24
+ enabled: boolean;
25
+ /** The FGA store the policy's `fga.check(...)` consults, by name. */
26
+ fga_store: string | null;
27
+ source: string;
28
+ tests: Array<{
29
+ name: string;
30
+ request: Record<string, unknown>;
31
+ expect: 'allow' | 'deny';
32
+ }>;
33
+ }
34
+ export interface BundleFgaStore {
35
+ name: string;
36
+ model: {
37
+ schema_version: string;
38
+ type_definitions: unknown[];
39
+ conditions?: Record<string, unknown>;
40
+ } | null;
41
+ }
42
+ export interface BundleAbacTemplate {
43
+ name: string;
44
+ description: string | null;
45
+ fga_store: string | null;
46
+ /** Policy source with ?principal / ?resource slots. */
47
+ source: string;
48
+ }
49
+ export interface BundleAbacLink {
50
+ name: string;
51
+ /** The template it fills, by name. */
52
+ template: string;
53
+ principal: {
54
+ type: string;
55
+ id: string;
56
+ } | null;
57
+ resource: {
58
+ type: string;
59
+ id: string;
60
+ } | null;
61
+ enabled: boolean;
62
+ }
63
+ export interface VerifiedPolicyBundle {
64
+ revision: string;
65
+ manifest: {
66
+ format: string;
67
+ format_version: number;
68
+ revision: string;
69
+ created_at: string;
70
+ issuer: string | null;
71
+ contents: {
72
+ abac_policies: number;
73
+ fga_stores: number;
74
+ abac_templates?: number;
75
+ abac_links?: number;
76
+ abac_schema?: boolean;
77
+ };
78
+ files: Array<{
79
+ path: string;
80
+ sha256: string;
81
+ size: number;
82
+ }>;
83
+ };
84
+ policies: BundleAbacPolicy[];
85
+ fgaStores: BundleFgaStore[];
86
+ /** The ABAC entity schema, or null when the bundle has none. */
87
+ abacSchema: Record<string, unknown> | null;
88
+ abacTemplates: BundleAbacTemplate[];
89
+ abacLinks: BundleAbacLink[];
90
+ /** The key id that signed it. */
91
+ keyId: string | undefined;
92
+ algorithm: string;
93
+ }
94
+ export interface VerifyPolicyBundleOptions {
95
+ /** The tar.gz bytes, or the base64 the API returns. */
96
+ bundle: Uint8Array | string;
97
+ /** The detached JWS (`header..signature`). */
98
+ signature: string;
99
+ /** Public keys you trust: the instance JWKS (`/.well-known/jwks.json`), or the key array. */
100
+ jwks: {
101
+ keys: JWK[];
102
+ } | JWK[];
103
+ /** Refuse a bundle that is not exactly this revision (pin what you deployed). */
104
+ expectedRevision?: string;
105
+ }
106
+ /**
107
+ * Verify and open a signed policy bundle. Throws {@link PolicyBundleError} with a
108
+ * stable `code` on any failure; returns the content only when everything checks out.
109
+ */
110
+ export declare function verifyPolicyBundle(opts: VerifyPolicyBundleOptions): Promise<VerifiedPolicyBundle>;