@canopy-io/node 0.1.1 → 0.2.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.
- package/dist/index.cjs +23 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +391 -160
- package/dist/index.d.ts +391 -160
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/package.json +9 -4
package/dist/index.d.cts
CHANGED
|
@@ -327,6 +327,26 @@ interface paths {
|
|
|
327
327
|
patch: operations["ApiPermissionsController_updatePermission"];
|
|
328
328
|
trace?: never;
|
|
329
329
|
};
|
|
330
|
+
"/api/v1/permissions/{id}/usage": {
|
|
331
|
+
parameters: {
|
|
332
|
+
query?: never;
|
|
333
|
+
header?: never;
|
|
334
|
+
path?: never;
|
|
335
|
+
cookie?: never;
|
|
336
|
+
};
|
|
337
|
+
/**
|
|
338
|
+
* Get where a permission is used
|
|
339
|
+
* @description Returns the roles that grant a permission, each with the number of distinct identities holding that role, plus `role_count` and the distinct `identity_count` the permission reaches overall. Because a permission is only ever held through a role, this is the full blast radius of deleting it — the listed roles are exactly the ones a delete would strip it from. Deactivated roles are included; `identity_count` is not the sum of the per-role counts, since one identity may hold several granting roles. Returns `404` when no permission with that id exists in the Environment. Requires the `rbac.view_roles` permission.
|
|
340
|
+
*/
|
|
341
|
+
get: operations["ApiPermissionsController_getPermissionUsage"];
|
|
342
|
+
put?: never;
|
|
343
|
+
post?: never;
|
|
344
|
+
delete?: never;
|
|
345
|
+
options?: never;
|
|
346
|
+
head?: never;
|
|
347
|
+
patch?: never;
|
|
348
|
+
trace?: never;
|
|
349
|
+
};
|
|
330
350
|
"/api/v1/permissions/evaluate": {
|
|
331
351
|
parameters: {
|
|
332
352
|
query?: never;
|
|
@@ -1598,6 +1618,24 @@ interface components {
|
|
|
1598
1618
|
/** @description One or more permissions to register */
|
|
1599
1619
|
permissions: components["schemas"]["PermissionItemDto"][];
|
|
1600
1620
|
};
|
|
1621
|
+
PermissionUsageRoleDto: {
|
|
1622
|
+
id: string;
|
|
1623
|
+
name: string;
|
|
1624
|
+
description?: string | null;
|
|
1625
|
+
is_system_role: boolean;
|
|
1626
|
+
/** @description Deactivated roles still carry the grant, so they are listed too — deleting the permission strips it from them as well. */
|
|
1627
|
+
is_active: boolean;
|
|
1628
|
+
/** @description Number of distinct identities assigned this role, across all nodes. */
|
|
1629
|
+
member_count: number;
|
|
1630
|
+
};
|
|
1631
|
+
PermissionUsageDto: {
|
|
1632
|
+
permission_id: string;
|
|
1633
|
+
/** @description Number of roles that grant this permission. */
|
|
1634
|
+
role_count: number;
|
|
1635
|
+
/** @description Distinct identities that hold this permission through any granting role. Lower than the sum of `member_count` when an identity holds more than one granting role. */
|
|
1636
|
+
identity_count: number;
|
|
1637
|
+
roles: components["schemas"]["PermissionUsageRoleDto"][];
|
|
1638
|
+
};
|
|
1601
1639
|
UpdatePermissionDto: {
|
|
1602
1640
|
/** @description Updated name */
|
|
1603
1641
|
name?: string;
|
|
@@ -1606,18 +1644,6 @@ interface components {
|
|
|
1606
1644
|
/** @description Updated category */
|
|
1607
1645
|
category?: string;
|
|
1608
1646
|
};
|
|
1609
|
-
EvaluatePermissionDto: {
|
|
1610
|
-
/** @description Identity ID (from the `identities` table — the end user being evaluated, not an admin). */
|
|
1611
|
-
identity_id: string;
|
|
1612
|
-
permission: string;
|
|
1613
|
-
/**
|
|
1614
|
-
* @description Required. `node` asks 'does this identity have the permission *at* `node_id`?' (lineage walk). `app_wide` asks the coarse-grained 'does this identity have the permission *anywhere* in the org?' question — useful for UI gating, **never** for resource-scoped enforcement. `node` requires `node_id`; `app_wide` forbids it.
|
|
1615
|
-
* @enum {string}
|
|
1616
|
-
*/
|
|
1617
|
-
scope: "node" | "app_wide";
|
|
1618
|
-
/** @description Required when `scope` is `node`; must be omitted when `scope` is `app_wide`. */
|
|
1619
|
-
node_id?: string;
|
|
1620
|
-
};
|
|
1621
1647
|
EvaluateResponseDto: {
|
|
1622
1648
|
allowed: boolean;
|
|
1623
1649
|
permission: string;
|
|
@@ -1631,6 +1657,18 @@ interface components {
|
|
|
1631
1657
|
granting_roles: string[];
|
|
1632
1658
|
denial_reason?: string | null;
|
|
1633
1659
|
};
|
|
1660
|
+
EvaluatePermissionDto: {
|
|
1661
|
+
/** @description Identity ID (from the `identities` table — the end user being evaluated, not an admin). */
|
|
1662
|
+
identity_id: string;
|
|
1663
|
+
permission: string;
|
|
1664
|
+
/**
|
|
1665
|
+
* @description Required. `node` asks 'does this identity have the permission *at* `node_id`?' (lineage walk). `app_wide` asks the coarse-grained 'does this identity have the permission *anywhere* in the org?' question — useful for UI gating, **never** for resource-scoped enforcement. `node` requires `node_id`; `app_wide` forbids it.
|
|
1666
|
+
* @enum {string}
|
|
1667
|
+
*/
|
|
1668
|
+
scope: "node" | "app_wide";
|
|
1669
|
+
/** @description Required when `scope` is `node`; must be omitted when `scope` is `app_wide`. */
|
|
1670
|
+
node_id?: string;
|
|
1671
|
+
};
|
|
1634
1672
|
EvaluateCheckDto: {
|
|
1635
1673
|
/** @description Identity ID (from the `identities` table — the end user being evaluated, not an admin). */
|
|
1636
1674
|
identity_id: string;
|
|
@@ -1646,13 +1684,6 @@ interface components {
|
|
|
1646
1684
|
BulkEvaluatePermissionDto: {
|
|
1647
1685
|
checks: components["schemas"]["EvaluateCheckDto"][];
|
|
1648
1686
|
};
|
|
1649
|
-
ExplainPermissionDto: {
|
|
1650
|
-
/** @description Identity ID (from the `identities` table — the end user being explained, not an admin). */
|
|
1651
|
-
identity_id: string;
|
|
1652
|
-
permission: string;
|
|
1653
|
-
/** @description The hierarchy node to explain the decision at. The lineage from the root to this node is walked and returned in the trace. */
|
|
1654
|
-
node_id: string;
|
|
1655
|
-
};
|
|
1656
1687
|
PermissionTraceAssignmentDto: {
|
|
1657
1688
|
assignment_id: string;
|
|
1658
1689
|
role_id: string;
|
|
@@ -1688,6 +1719,13 @@ interface components {
|
|
|
1688
1719
|
/** @description Root-first lineage of the target node, each with the identity's assignments observed at that node. */
|
|
1689
1720
|
lineage: components["schemas"]["PermissionTraceNodeDto"][];
|
|
1690
1721
|
};
|
|
1722
|
+
ExplainPermissionDto: {
|
|
1723
|
+
/** @description Identity ID (from the `identities` table — the end user being explained, not an admin). */
|
|
1724
|
+
identity_id: string;
|
|
1725
|
+
permission: string;
|
|
1726
|
+
/** @description The hierarchy node to explain the decision at. The lineage from the root to this node is walked and returned in the trace. */
|
|
1727
|
+
node_id: string;
|
|
1728
|
+
};
|
|
1691
1729
|
PageMetaDto: {
|
|
1692
1730
|
/** @description Current page number (1-based) */
|
|
1693
1731
|
page: number;
|
|
@@ -1720,6 +1758,10 @@ interface components {
|
|
|
1720
1758
|
name: string;
|
|
1721
1759
|
node_id: string;
|
|
1722
1760
|
node_name: string;
|
|
1761
|
+
/** @description When this assignment starts; null means it is already active */
|
|
1762
|
+
effective_from: string | null;
|
|
1763
|
+
/** @description When this assignment expires; null means it never does */
|
|
1764
|
+
effective_to: string | null;
|
|
1723
1765
|
};
|
|
1724
1766
|
IdentityRowDto: {
|
|
1725
1767
|
id: string;
|
|
@@ -1891,29 +1933,6 @@ interface components {
|
|
|
1891
1933
|
expired_count: number;
|
|
1892
1934
|
revoked_count: number;
|
|
1893
1935
|
};
|
|
1894
|
-
CreateIdentityInviteDto: {
|
|
1895
|
-
/** @description OAuth client ID — determines which app the invite links to. If omitted, uses Canopy hosted fallback. */
|
|
1896
|
-
client_id?: string;
|
|
1897
|
-
/**
|
|
1898
|
-
* @description Optional. `activate` (default) creates a net-new identity OR — if an identity with this email already exists in the Account but has no active membership in this App — auto-derives an `add_to_app` invite that adds them to this App without touching their existing password. `password_reset` is the explicit admin-driven credential-rotation flow for an existing identity; it cannot carry a role/node assignment. The legacy `onboard` value is accepted and treated as `activate`.
|
|
1899
|
-
* @enum {string}
|
|
1900
|
-
*/
|
|
1901
|
-
intent?: "activate" | "password_reset" | "onboard";
|
|
1902
|
-
email: string;
|
|
1903
|
-
/** @description Required for `activate`. Ignored for `add_to_app` (the existing identity's name wins) and for `password_reset`. */
|
|
1904
|
-
first_name?: string;
|
|
1905
|
-
/** @description Required for `activate`. Ignored for `add_to_app` and `password_reset`. */
|
|
1906
|
-
last_name?: string;
|
|
1907
|
-
/** @description Role ID — required if node_id is provided */
|
|
1908
|
-
role_id?: string;
|
|
1909
|
-
/** @description Node ID — required if role_id is provided */
|
|
1910
|
-
node_id?: string;
|
|
1911
|
-
/**
|
|
1912
|
-
* @description Whether Canopy should send the invite email. Set false to suppress delivery and handle it yourself — the API response includes accept_url with the tokenized link. Defaults to true.
|
|
1913
|
-
* @default true
|
|
1914
|
-
*/
|
|
1915
|
-
send_email: boolean;
|
|
1916
|
-
};
|
|
1917
1936
|
ApiIdentityInviteResponseDto: {
|
|
1918
1937
|
id: string;
|
|
1919
1938
|
email: string;
|
|
@@ -1942,6 +1961,29 @@ interface components {
|
|
|
1942
1961
|
/** @description Tokenized URL the invitee would land on. Returned so callers that pass send_email=false can deliver it themselves. */
|
|
1943
1962
|
accept_url: string;
|
|
1944
1963
|
};
|
|
1964
|
+
CreateIdentityInviteDto: {
|
|
1965
|
+
/** @description OAuth client ID — determines which app the invite links to. If omitted, uses Canopy hosted fallback. */
|
|
1966
|
+
client_id?: string;
|
|
1967
|
+
/**
|
|
1968
|
+
* @description Optional. `activate` (default) creates a net-new identity OR — if an identity with this email already exists in the Account but has no active membership in this App — auto-derives an `add_to_app` invite that adds them to this App without touching their existing password. `password_reset` is the explicit admin-driven credential-rotation flow for an existing identity; it cannot carry a role/node assignment. The legacy `onboard` value is accepted and treated as `activate`.
|
|
1969
|
+
* @enum {string}
|
|
1970
|
+
*/
|
|
1971
|
+
intent?: "activate" | "password_reset" | "onboard";
|
|
1972
|
+
email: string;
|
|
1973
|
+
/** @description Required for `activate`. Ignored for `add_to_app` (the existing identity's name wins) and for `password_reset`. */
|
|
1974
|
+
first_name?: string;
|
|
1975
|
+
/** @description Required for `activate`. Ignored for `add_to_app` and `password_reset`. */
|
|
1976
|
+
last_name?: string;
|
|
1977
|
+
/** @description Role ID — required if node_id is provided */
|
|
1978
|
+
role_id?: string;
|
|
1979
|
+
/** @description Node ID — required if role_id is provided */
|
|
1980
|
+
node_id?: string;
|
|
1981
|
+
/**
|
|
1982
|
+
* @description Whether Canopy should send the invite email. Set false to suppress delivery and handle it yourself — the API response includes accept_url with the tokenized link. Defaults to true.
|
|
1983
|
+
* @default true
|
|
1984
|
+
*/
|
|
1985
|
+
send_email: boolean;
|
|
1986
|
+
};
|
|
1945
1987
|
BulkCreateIdentityInvitesDto: {
|
|
1946
1988
|
invites: components["schemas"]["CreateIdentityInviteDto"][];
|
|
1947
1989
|
};
|
|
@@ -1950,20 +1992,6 @@ interface components {
|
|
|
1950
1992
|
/** @description Tokenized URL for the regenerated invite. Resend rotates the token, which invalidates any accept_url returned from the original create call. Self-delivery callers must replace the stored URL with this one. */
|
|
1951
1993
|
accept_url: string;
|
|
1952
1994
|
};
|
|
1953
|
-
CreateNodeDto: {
|
|
1954
|
-
/** @description Parent node ID (null for root) */
|
|
1955
|
-
parent_node_id?: string;
|
|
1956
|
-
/** @description Node type (org-defined, e.g. 'department', 'team') */
|
|
1957
|
-
node_type: string;
|
|
1958
|
-
/** @description Display name for the node */
|
|
1959
|
-
name: string;
|
|
1960
|
-
/** @description Optional free-text description shown under the node name */
|
|
1961
|
-
description?: string;
|
|
1962
|
-
/** @description URL-friendly slug (auto-generated if omitted) */
|
|
1963
|
-
slug?: string;
|
|
1964
|
-
/** @description Arbitrary metadata */
|
|
1965
|
-
metadata?: Record<string, unknown>;
|
|
1966
|
-
};
|
|
1967
1995
|
NodeResponseDto: {
|
|
1968
1996
|
id: string;
|
|
1969
1997
|
application_id: string;
|
|
@@ -1982,6 +2010,20 @@ interface components {
|
|
|
1982
2010
|
/** @description Optimistic-lock version. Send back as the `If-Match` header when updating, moving, or deleting to detect concurrent edits. */
|
|
1983
2011
|
version: number;
|
|
1984
2012
|
};
|
|
2013
|
+
CreateNodeDto: {
|
|
2014
|
+
/** @description Parent node ID (null for root) */
|
|
2015
|
+
parent_node_id?: string;
|
|
2016
|
+
/** @description Node type (org-defined, e.g. 'department', 'team') */
|
|
2017
|
+
node_type: string;
|
|
2018
|
+
/** @description Display name for the node */
|
|
2019
|
+
name: string;
|
|
2020
|
+
/** @description Optional free-text description shown under the node name */
|
|
2021
|
+
description?: string;
|
|
2022
|
+
/** @description URL-friendly slug (auto-generated if omitted) */
|
|
2023
|
+
slug?: string;
|
|
2024
|
+
/** @description Arbitrary metadata */
|
|
2025
|
+
metadata?: Record<string, unknown>;
|
|
2026
|
+
};
|
|
1985
2027
|
HierarchyTreeNodeDto: {
|
|
1986
2028
|
id: string;
|
|
1987
2029
|
name: string;
|
|
@@ -2221,6 +2263,44 @@ interface components {
|
|
|
2221
2263
|
/** @description Whether this row should appear on a future end-user `My security activity` surface. Not consumed by current reads. */
|
|
2222
2264
|
identity_visible: boolean;
|
|
2223
2265
|
};
|
|
2266
|
+
ExportJobDto: {
|
|
2267
|
+
/** Format: uuid */
|
|
2268
|
+
id: string;
|
|
2269
|
+
/**
|
|
2270
|
+
* @description `pending` (enqueued), `processing` (worker rendering), `completed` (file ready), or `failed` (see `error`).
|
|
2271
|
+
* @enum {string}
|
|
2272
|
+
*/
|
|
2273
|
+
status: "pending" | "processing" | "completed" | "failed";
|
|
2274
|
+
/**
|
|
2275
|
+
* @description The audit surface the export was taken from.
|
|
2276
|
+
* @enum {string}
|
|
2277
|
+
*/
|
|
2278
|
+
surface: "admin" | "identities";
|
|
2279
|
+
/**
|
|
2280
|
+
* @description Wire format of the rendered file.
|
|
2281
|
+
* @enum {string}
|
|
2282
|
+
*/
|
|
2283
|
+
format: "csv" | "ndjson";
|
|
2284
|
+
/** Format: uuid */
|
|
2285
|
+
application_id?: string | null;
|
|
2286
|
+
/** Format: uuid */
|
|
2287
|
+
environment_id?: string | null;
|
|
2288
|
+
/** @description Rows written, set once the job completes. */
|
|
2289
|
+
row_count?: number | null;
|
|
2290
|
+
/** @description Failure detail, present only when `status` is `failed`. */
|
|
2291
|
+
error?: string | null;
|
|
2292
|
+
/** Format: date-time */
|
|
2293
|
+
created_at: string;
|
|
2294
|
+
/** Format: date-time */
|
|
2295
|
+
completed_at?: string | null;
|
|
2296
|
+
/**
|
|
2297
|
+
* Format: date-time
|
|
2298
|
+
* @description When the stored file + this record become eligible for sweep.
|
|
2299
|
+
*/
|
|
2300
|
+
expires_at?: string | null;
|
|
2301
|
+
/** @description Short-lived signed download URL. Present only on the single-job read of a completed job; `null` otherwise. */
|
|
2302
|
+
download_url?: string | null;
|
|
2303
|
+
};
|
|
2224
2304
|
AuditExportQueryDto: {
|
|
2225
2305
|
/**
|
|
2226
2306
|
* Format: date-time
|
|
@@ -2269,44 +2349,6 @@ interface components {
|
|
|
2269
2349
|
*/
|
|
2270
2350
|
format: "csv" | "ndjson";
|
|
2271
2351
|
};
|
|
2272
|
-
ExportJobDto: {
|
|
2273
|
-
/** Format: uuid */
|
|
2274
|
-
id: string;
|
|
2275
|
-
/**
|
|
2276
|
-
* @description `pending` (enqueued), `processing` (worker rendering), `completed` (file ready), or `failed` (see `error`).
|
|
2277
|
-
* @enum {string}
|
|
2278
|
-
*/
|
|
2279
|
-
status: "pending" | "processing" | "completed" | "failed";
|
|
2280
|
-
/**
|
|
2281
|
-
* @description The audit surface the export was taken from.
|
|
2282
|
-
* @enum {string}
|
|
2283
|
-
*/
|
|
2284
|
-
surface: "admin" | "identities";
|
|
2285
|
-
/**
|
|
2286
|
-
* @description Wire format of the rendered file.
|
|
2287
|
-
* @enum {string}
|
|
2288
|
-
*/
|
|
2289
|
-
format: "csv" | "ndjson";
|
|
2290
|
-
/** Format: uuid */
|
|
2291
|
-
application_id?: string | null;
|
|
2292
|
-
/** Format: uuid */
|
|
2293
|
-
environment_id?: string | null;
|
|
2294
|
-
/** @description Rows written, set once the job completes. */
|
|
2295
|
-
row_count?: number | null;
|
|
2296
|
-
/** @description Failure detail, present only when `status` is `failed`. */
|
|
2297
|
-
error?: string | null;
|
|
2298
|
-
/** Format: date-time */
|
|
2299
|
-
created_at: string;
|
|
2300
|
-
/** Format: date-time */
|
|
2301
|
-
completed_at?: string | null;
|
|
2302
|
-
/**
|
|
2303
|
-
* Format: date-time
|
|
2304
|
-
* @description When the stored file + this record become eligible for sweep.
|
|
2305
|
-
*/
|
|
2306
|
-
expires_at?: string | null;
|
|
2307
|
-
/** @description Short-lived signed download URL. Present only on the single-job read of a completed job; `null` otherwise. */
|
|
2308
|
-
download_url?: string | null;
|
|
2309
|
-
};
|
|
2310
2352
|
AuditLogDetailResponseDto: {
|
|
2311
2353
|
id: string;
|
|
2312
2354
|
account_id?: string | null;
|
|
@@ -2399,11 +2441,6 @@ interface components {
|
|
|
2399
2441
|
/** @description Node type used when the root node is auto-created. Must be one of `node_types`. */
|
|
2400
2442
|
root_node_type: string;
|
|
2401
2443
|
};
|
|
2402
|
-
CreateWebhookDto: {
|
|
2403
|
-
url: string;
|
|
2404
|
-
event_types: string[];
|
|
2405
|
-
description?: string;
|
|
2406
|
-
};
|
|
2407
2444
|
WebhookCreatedResponseDto: {
|
|
2408
2445
|
id: string;
|
|
2409
2446
|
/** @enum {string} */
|
|
@@ -2417,6 +2454,11 @@ interface components {
|
|
|
2417
2454
|
/** @description HMAC secret — only shown once on creation */
|
|
2418
2455
|
secret: string;
|
|
2419
2456
|
};
|
|
2457
|
+
CreateWebhookDto: {
|
|
2458
|
+
url: string;
|
|
2459
|
+
event_types: string[];
|
|
2460
|
+
description?: string;
|
|
2461
|
+
};
|
|
2420
2462
|
WebhookResponseDto: {
|
|
2421
2463
|
id: string;
|
|
2422
2464
|
/** @enum {string} */
|
|
@@ -2452,21 +2494,6 @@ interface components {
|
|
|
2452
2494
|
description?: string | null;
|
|
2453
2495
|
is_active?: boolean;
|
|
2454
2496
|
};
|
|
2455
|
-
CreateApiKeyDto: {
|
|
2456
|
-
/** @description API key name */
|
|
2457
|
-
name: string;
|
|
2458
|
-
/** @description API key description */
|
|
2459
|
-
description?: string;
|
|
2460
|
-
/**
|
|
2461
|
-
* @description Required. `scoped` enforces the `scopes` array on every authorization check (deny if the requested permission isn't listed). `full_access` bypasses RBAC entirely within the key's Application — every permission is granted. Pick `scoped` whenever possible; `full_access` should be a deliberate choice (use cases: bootstrap automation, trusted backend services that legitimately need App-wide access). `scoped` requires a non-empty `scopes` array; `full_access` forbids `scopes`.
|
|
2462
|
-
* @enum {string}
|
|
2463
|
-
*/
|
|
2464
|
-
access_mode: "scoped" | "full_access";
|
|
2465
|
-
/** @description Permission scopes this key is authorized for. Required and must be non-empty when `access_mode` is `scoped`. Must be omitted when `access_mode` is `full_access`. */
|
|
2466
|
-
scopes?: string[];
|
|
2467
|
-
/** @description Expiration date (ISO 8601). Omit for no expiration. */
|
|
2468
|
-
expires_at?: string;
|
|
2469
|
-
};
|
|
2470
2497
|
ApiKeyCreatedResponseDto: {
|
|
2471
2498
|
id: string;
|
|
2472
2499
|
name: string;
|
|
@@ -2485,6 +2512,21 @@ interface components {
|
|
|
2485
2512
|
/** Format: date-time */
|
|
2486
2513
|
created_at: string;
|
|
2487
2514
|
};
|
|
2515
|
+
CreateApiKeyDto: {
|
|
2516
|
+
/** @description API key name */
|
|
2517
|
+
name: string;
|
|
2518
|
+
/** @description API key description */
|
|
2519
|
+
description?: string;
|
|
2520
|
+
/**
|
|
2521
|
+
* @description Required. `scoped` enforces the `scopes` array on every authorization check (deny if the requested permission isn't listed). `full_access` bypasses RBAC entirely within the key's Application — every permission is granted. Pick `scoped` whenever possible; `full_access` should be a deliberate choice (use cases: bootstrap automation, trusted backend services that legitimately need App-wide access). `scoped` requires a non-empty `scopes` array; `full_access` forbids `scopes`.
|
|
2522
|
+
* @enum {string}
|
|
2523
|
+
*/
|
|
2524
|
+
access_mode: "scoped" | "full_access";
|
|
2525
|
+
/** @description Permission scopes this key is authorized for. Required and must be non-empty when `access_mode` is `scoped`. Must be omitted when `access_mode` is `full_access`. */
|
|
2526
|
+
scopes?: string[];
|
|
2527
|
+
/** @description Expiration date (ISO 8601). Omit for no expiration. */
|
|
2528
|
+
expires_at?: string;
|
|
2529
|
+
};
|
|
2488
2530
|
ApiKeyResponseDto: {
|
|
2489
2531
|
id: string;
|
|
2490
2532
|
client_id: string;
|
|
@@ -2645,7 +2687,9 @@ interface operations {
|
|
|
2645
2687
|
[name: string]: unknown;
|
|
2646
2688
|
};
|
|
2647
2689
|
content: {
|
|
2648
|
-
"application/json":
|
|
2690
|
+
"application/json": {
|
|
2691
|
+
data: components["schemas"]["PermissionResponseDto"];
|
|
2692
|
+
};
|
|
2649
2693
|
};
|
|
2650
2694
|
};
|
|
2651
2695
|
/** @description Invalid or expired token */
|
|
@@ -2709,7 +2753,9 @@ interface operations {
|
|
|
2709
2753
|
[name: string]: unknown;
|
|
2710
2754
|
};
|
|
2711
2755
|
content: {
|
|
2712
|
-
"application/json":
|
|
2756
|
+
"application/json": {
|
|
2757
|
+
data: components["schemas"]["PermissionResponseDto"];
|
|
2758
|
+
};
|
|
2713
2759
|
};
|
|
2714
2760
|
};
|
|
2715
2761
|
/** @description Invalid or expired token */
|
|
@@ -2868,7 +2914,9 @@ interface operations {
|
|
|
2868
2914
|
[name: string]: unknown;
|
|
2869
2915
|
};
|
|
2870
2916
|
content: {
|
|
2871
|
-
"application/json":
|
|
2917
|
+
"application/json": {
|
|
2918
|
+
data: components["schemas"]["PermissionResponseDto"];
|
|
2919
|
+
};
|
|
2872
2920
|
};
|
|
2873
2921
|
};
|
|
2874
2922
|
/** @description Invalid or expired token */
|
|
@@ -2936,6 +2984,93 @@ interface operations {
|
|
|
2936
2984
|
};
|
|
2937
2985
|
};
|
|
2938
2986
|
};
|
|
2987
|
+
ApiPermissionsController_getPermissionUsage: {
|
|
2988
|
+
parameters: {
|
|
2989
|
+
query?: never;
|
|
2990
|
+
header?: never;
|
|
2991
|
+
path: {
|
|
2992
|
+
id: string;
|
|
2993
|
+
};
|
|
2994
|
+
cookie?: never;
|
|
2995
|
+
};
|
|
2996
|
+
requestBody?: never;
|
|
2997
|
+
responses: {
|
|
2998
|
+
/** @description Granting roles and identity reach returned */
|
|
2999
|
+
200: {
|
|
3000
|
+
headers: {
|
|
3001
|
+
[name: string]: unknown;
|
|
3002
|
+
};
|
|
3003
|
+
content: {
|
|
3004
|
+
"application/json": {
|
|
3005
|
+
data: components["schemas"]["PermissionUsageDto"];
|
|
3006
|
+
};
|
|
3007
|
+
};
|
|
3008
|
+
};
|
|
3009
|
+
/** @description Invalid or expired token */
|
|
3010
|
+
401: {
|
|
3011
|
+
headers: {
|
|
3012
|
+
[name: string]: unknown;
|
|
3013
|
+
};
|
|
3014
|
+
content: {
|
|
3015
|
+
/**
|
|
3016
|
+
* @example {
|
|
3017
|
+
* "error": {
|
|
3018
|
+
* "statusCode": 401,
|
|
3019
|
+
* "code": null,
|
|
3020
|
+
* "message": "Invalid or expired token",
|
|
3021
|
+
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
3022
|
+
* "path": "/api/v1/permissions",
|
|
3023
|
+
* "method": "GET"
|
|
3024
|
+
* }
|
|
3025
|
+
* }
|
|
3026
|
+
*/
|
|
3027
|
+
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
3028
|
+
};
|
|
3029
|
+
};
|
|
3030
|
+
/** @description This token is not authorized for this endpoint (wrong principal type — e.g., admin token on identity-only endpoint, or vice versa) */
|
|
3031
|
+
403: {
|
|
3032
|
+
headers: {
|
|
3033
|
+
[name: string]: unknown;
|
|
3034
|
+
};
|
|
3035
|
+
content: {
|
|
3036
|
+
/**
|
|
3037
|
+
* @example {
|
|
3038
|
+
* "error": {
|
|
3039
|
+
* "statusCode": 403,
|
|
3040
|
+
* "code": null,
|
|
3041
|
+
* "message": "This token is not authorized for this endpoint (wrong principal type — e.g., admin token on identity-only endpoint, or vice versa)",
|
|
3042
|
+
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
3043
|
+
* "path": "/api/v1/permissions",
|
|
3044
|
+
* "method": "GET"
|
|
3045
|
+
* }
|
|
3046
|
+
* }
|
|
3047
|
+
*/
|
|
3048
|
+
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
3049
|
+
};
|
|
3050
|
+
};
|
|
3051
|
+
/** @description No permission with that id exists in this Environment */
|
|
3052
|
+
404: {
|
|
3053
|
+
headers: {
|
|
3054
|
+
[name: string]: unknown;
|
|
3055
|
+
};
|
|
3056
|
+
content: {
|
|
3057
|
+
/**
|
|
3058
|
+
* @example {
|
|
3059
|
+
* "error": {
|
|
3060
|
+
* "statusCode": 404,
|
|
3061
|
+
* "code": null,
|
|
3062
|
+
* "message": "No permission with that id exists in this Environment",
|
|
3063
|
+
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
3064
|
+
* "path": "/api/v1/permissions/{id}/usage",
|
|
3065
|
+
* "method": "GET"
|
|
3066
|
+
* }
|
|
3067
|
+
* }
|
|
3068
|
+
*/
|
|
3069
|
+
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
3070
|
+
};
|
|
3071
|
+
};
|
|
3072
|
+
};
|
|
3073
|
+
};
|
|
2939
3074
|
ApiPermissionsController_evaluate: {
|
|
2940
3075
|
parameters: {
|
|
2941
3076
|
query?: never;
|
|
@@ -2955,7 +3090,9 @@ interface operations {
|
|
|
2955
3090
|
[name: string]: unknown;
|
|
2956
3091
|
};
|
|
2957
3092
|
content: {
|
|
2958
|
-
"application/json":
|
|
3093
|
+
"application/json": {
|
|
3094
|
+
data: components["schemas"]["EvaluateResponseDto"];
|
|
3095
|
+
};
|
|
2959
3096
|
};
|
|
2960
3097
|
};
|
|
2961
3098
|
/** @description Invalid or expired token */
|
|
@@ -3089,7 +3226,9 @@ interface operations {
|
|
|
3089
3226
|
[name: string]: unknown;
|
|
3090
3227
|
};
|
|
3091
3228
|
content: {
|
|
3092
|
-
"application/json":
|
|
3229
|
+
"application/json": {
|
|
3230
|
+
data: components["schemas"]["PermissionTraceDto"];
|
|
3231
|
+
};
|
|
3093
3232
|
};
|
|
3094
3233
|
};
|
|
3095
3234
|
/** @description Invalid or expired token */
|
|
@@ -3252,7 +3391,9 @@ interface operations {
|
|
|
3252
3391
|
[name: string]: unknown;
|
|
3253
3392
|
};
|
|
3254
3393
|
content: {
|
|
3255
|
-
"application/json":
|
|
3394
|
+
"application/json": {
|
|
3395
|
+
data: components["schemas"]["IdentityResponseDto"];
|
|
3396
|
+
};
|
|
3256
3397
|
};
|
|
3257
3398
|
};
|
|
3258
3399
|
/** @description Password rejected — appeared in a known data breach (HaveIBeenPwned check) */
|
|
@@ -3436,7 +3577,9 @@ interface operations {
|
|
|
3436
3577
|
[name: string]: unknown;
|
|
3437
3578
|
};
|
|
3438
3579
|
content: {
|
|
3439
|
-
"application/json":
|
|
3580
|
+
"application/json": {
|
|
3581
|
+
data: components["schemas"]["IdentitiesSummaryDto"];
|
|
3582
|
+
};
|
|
3440
3583
|
};
|
|
3441
3584
|
};
|
|
3442
3585
|
/** @description Invalid or expired token */
|
|
@@ -3624,7 +3767,9 @@ interface operations {
|
|
|
3624
3767
|
[name: string]: unknown;
|
|
3625
3768
|
};
|
|
3626
3769
|
content: {
|
|
3627
|
-
"application/json":
|
|
3770
|
+
"application/json": {
|
|
3771
|
+
data: components["schemas"]["IdentityResponseDto"];
|
|
3772
|
+
};
|
|
3628
3773
|
};
|
|
3629
3774
|
};
|
|
3630
3775
|
/** @description Invalid or expired token */
|
|
@@ -3796,7 +3941,9 @@ interface operations {
|
|
|
3796
3941
|
[name: string]: unknown;
|
|
3797
3942
|
};
|
|
3798
3943
|
content: {
|
|
3799
|
-
"application/json":
|
|
3944
|
+
"application/json": {
|
|
3945
|
+
data: components["schemas"]["IdentityResponseDto"];
|
|
3946
|
+
};
|
|
3800
3947
|
};
|
|
3801
3948
|
};
|
|
3802
3949
|
/** @description Invalid or expired token */
|
|
@@ -3881,7 +4028,9 @@ interface operations {
|
|
|
3881
4028
|
[name: string]: unknown;
|
|
3882
4029
|
};
|
|
3883
4030
|
content: {
|
|
3884
|
-
"application/json":
|
|
4031
|
+
"application/json": {
|
|
4032
|
+
data: components["schemas"]["IdentityDetailResponseDto"];
|
|
4033
|
+
};
|
|
3885
4034
|
};
|
|
3886
4035
|
};
|
|
3887
4036
|
/** @description Invalid or expired token */
|
|
@@ -3966,7 +4115,9 @@ interface operations {
|
|
|
3966
4115
|
[name: string]: unknown;
|
|
3967
4116
|
};
|
|
3968
4117
|
content: {
|
|
3969
|
-
"application/json":
|
|
4118
|
+
"application/json": {
|
|
4119
|
+
data: components["schemas"]["MessageResponseDto"];
|
|
4120
|
+
};
|
|
3970
4121
|
};
|
|
3971
4122
|
};
|
|
3972
4123
|
/** @description Invalid or expired token */
|
|
@@ -4051,7 +4202,9 @@ interface operations {
|
|
|
4051
4202
|
[name: string]: unknown;
|
|
4052
4203
|
};
|
|
4053
4204
|
content: {
|
|
4054
|
-
"application/json":
|
|
4205
|
+
"application/json": {
|
|
4206
|
+
data: components["schemas"]["MessageResponseDto"];
|
|
4207
|
+
};
|
|
4055
4208
|
};
|
|
4056
4209
|
};
|
|
4057
4210
|
/** @description Invalid or expired token */
|
|
@@ -4410,7 +4563,9 @@ interface operations {
|
|
|
4410
4563
|
[name: string]: unknown;
|
|
4411
4564
|
};
|
|
4412
4565
|
content: {
|
|
4413
|
-
"application/json":
|
|
4566
|
+
"application/json": {
|
|
4567
|
+
data: components["schemas"]["AccountIdentityMfaResponseDto"];
|
|
4568
|
+
};
|
|
4414
4569
|
};
|
|
4415
4570
|
};
|
|
4416
4571
|
/** @description Invalid or expired token */
|
|
@@ -4578,7 +4733,9 @@ interface operations {
|
|
|
4578
4733
|
[name: string]: unknown;
|
|
4579
4734
|
};
|
|
4580
4735
|
content: {
|
|
4581
|
-
"application/json":
|
|
4736
|
+
"application/json": {
|
|
4737
|
+
data: components["schemas"]["IdentityAuthStateResponseDto"];
|
|
4738
|
+
};
|
|
4582
4739
|
};
|
|
4583
4740
|
};
|
|
4584
4741
|
/** @description Invalid or expired token */
|
|
@@ -5080,7 +5237,9 @@ interface operations {
|
|
|
5080
5237
|
[name: string]: unknown;
|
|
5081
5238
|
};
|
|
5082
5239
|
content: {
|
|
5083
|
-
"application/json":
|
|
5240
|
+
"application/json": {
|
|
5241
|
+
data: components["schemas"]["ApiIdentityInviteResponseDto"];
|
|
5242
|
+
};
|
|
5084
5243
|
};
|
|
5085
5244
|
};
|
|
5086
5245
|
/** @description Invalid or expired token */
|
|
@@ -5142,7 +5301,9 @@ interface operations {
|
|
|
5142
5301
|
[name: string]: unknown;
|
|
5143
5302
|
};
|
|
5144
5303
|
content: {
|
|
5145
|
-
"application/json":
|
|
5304
|
+
"application/json": {
|
|
5305
|
+
data: components["schemas"]["IdentityInvitesSummaryDto"];
|
|
5306
|
+
};
|
|
5146
5307
|
};
|
|
5147
5308
|
};
|
|
5148
5309
|
/** @description Invalid or expired token */
|
|
@@ -5330,7 +5491,9 @@ interface operations {
|
|
|
5330
5491
|
[name: string]: unknown;
|
|
5331
5492
|
};
|
|
5332
5493
|
content: {
|
|
5333
|
-
"application/json":
|
|
5494
|
+
"application/json": {
|
|
5495
|
+
data: components["schemas"]["ApiIdentityInviteResendResponseDto"];
|
|
5496
|
+
};
|
|
5334
5497
|
};
|
|
5335
5498
|
};
|
|
5336
5499
|
/** @description Invite is no longer pending */
|
|
@@ -5541,7 +5704,9 @@ interface operations {
|
|
|
5541
5704
|
[name: string]: unknown;
|
|
5542
5705
|
};
|
|
5543
5706
|
content: {
|
|
5544
|
-
"application/json":
|
|
5707
|
+
"application/json": {
|
|
5708
|
+
data: components["schemas"]["ScopedHierarchyTreeResponseDto"];
|
|
5709
|
+
};
|
|
5545
5710
|
};
|
|
5546
5711
|
};
|
|
5547
5712
|
/** @description The hierarchy is unchanged since the supplied `ETag`. No body; keep using the cached tree. */
|
|
@@ -5614,7 +5779,9 @@ interface operations {
|
|
|
5614
5779
|
[name: string]: unknown;
|
|
5615
5780
|
};
|
|
5616
5781
|
content: {
|
|
5617
|
-
"application/json":
|
|
5782
|
+
"application/json": {
|
|
5783
|
+
data: components["schemas"]["NodeResponseDto"];
|
|
5784
|
+
};
|
|
5618
5785
|
};
|
|
5619
5786
|
};
|
|
5620
5787
|
/** @description Invalid parent-child relationship */
|
|
@@ -5794,7 +5961,9 @@ interface operations {
|
|
|
5794
5961
|
[name: string]: unknown;
|
|
5795
5962
|
};
|
|
5796
5963
|
content: {
|
|
5797
|
-
"application/json":
|
|
5964
|
+
"application/json": {
|
|
5965
|
+
data: components["schemas"]["NodeAccessResponseDto"];
|
|
5966
|
+
};
|
|
5798
5967
|
};
|
|
5799
5968
|
};
|
|
5800
5969
|
/** @description Invalid or expired token */
|
|
@@ -5995,7 +6164,9 @@ interface operations {
|
|
|
5995
6164
|
[name: string]: unknown;
|
|
5996
6165
|
};
|
|
5997
6166
|
content: {
|
|
5998
|
-
"application/json":
|
|
6167
|
+
"application/json": {
|
|
6168
|
+
data: components["schemas"]["NodeResponseDto"];
|
|
6169
|
+
};
|
|
5999
6170
|
};
|
|
6000
6171
|
};
|
|
6001
6172
|
/** @description Invalid parent-child relationship */
|
|
@@ -6122,7 +6293,9 @@ interface operations {
|
|
|
6122
6293
|
[name: string]: unknown;
|
|
6123
6294
|
};
|
|
6124
6295
|
content: {
|
|
6125
|
-
"application/json":
|
|
6296
|
+
"application/json": {
|
|
6297
|
+
data: components["schemas"]["HierarchyTreeNodeDto"];
|
|
6298
|
+
};
|
|
6126
6299
|
};
|
|
6127
6300
|
};
|
|
6128
6301
|
/** @description Invalid or expired token */
|
|
@@ -6326,7 +6499,9 @@ interface operations {
|
|
|
6326
6499
|
[name: string]: unknown;
|
|
6327
6500
|
};
|
|
6328
6501
|
content: {
|
|
6329
|
-
"application/json":
|
|
6502
|
+
"application/json": {
|
|
6503
|
+
data: components["schemas"]["NodeResponseDto"];
|
|
6504
|
+
};
|
|
6330
6505
|
};
|
|
6331
6506
|
};
|
|
6332
6507
|
/** @description Invalid or expired token */
|
|
@@ -6539,7 +6714,9 @@ interface operations {
|
|
|
6539
6714
|
[name: string]: unknown;
|
|
6540
6715
|
};
|
|
6541
6716
|
content: {
|
|
6542
|
-
"application/json":
|
|
6717
|
+
"application/json": {
|
|
6718
|
+
data: components["schemas"]["NodeIdentitiesSummaryDto"];
|
|
6719
|
+
};
|
|
6543
6720
|
};
|
|
6544
6721
|
};
|
|
6545
6722
|
/** @description Invalid or expired token */
|
|
@@ -6693,7 +6870,9 @@ interface operations {
|
|
|
6693
6870
|
[name: string]: unknown;
|
|
6694
6871
|
};
|
|
6695
6872
|
content: {
|
|
6696
|
-
"application/json":
|
|
6873
|
+
"application/json": {
|
|
6874
|
+
data: components["schemas"]["RoleResponseDto"];
|
|
6875
|
+
};
|
|
6697
6876
|
};
|
|
6698
6877
|
};
|
|
6699
6878
|
/** @description Invalid or expired token */
|
|
@@ -6778,7 +6957,9 @@ interface operations {
|
|
|
6778
6957
|
[name: string]: unknown;
|
|
6779
6958
|
};
|
|
6780
6959
|
content: {
|
|
6781
|
-
"application/json":
|
|
6960
|
+
"application/json": {
|
|
6961
|
+
data: components["schemas"]["RoleResponseDto"];
|
|
6962
|
+
};
|
|
6782
6963
|
};
|
|
6783
6964
|
};
|
|
6784
6965
|
/** @description Invalid or expired token */
|
|
@@ -6979,7 +7160,9 @@ interface operations {
|
|
|
6979
7160
|
[name: string]: unknown;
|
|
6980
7161
|
};
|
|
6981
7162
|
content: {
|
|
6982
|
-
"application/json":
|
|
7163
|
+
"application/json": {
|
|
7164
|
+
data: components["schemas"]["RoleResponseDto"];
|
|
7165
|
+
};
|
|
6983
7166
|
};
|
|
6984
7167
|
};
|
|
6985
7168
|
/** @description Invalid or expired token */
|
|
@@ -7176,7 +7359,9 @@ interface operations {
|
|
|
7176
7359
|
[name: string]: unknown;
|
|
7177
7360
|
};
|
|
7178
7361
|
content: {
|
|
7179
|
-
"application/json":
|
|
7362
|
+
"application/json": {
|
|
7363
|
+
data: components["schemas"]["MessageResponseDto"];
|
|
7364
|
+
};
|
|
7180
7365
|
};
|
|
7181
7366
|
};
|
|
7182
7367
|
/** @description Invalid or expired token */
|
|
@@ -7341,7 +7526,9 @@ interface operations {
|
|
|
7341
7526
|
[name: string]: unknown;
|
|
7342
7527
|
};
|
|
7343
7528
|
content: {
|
|
7344
|
-
"application/json":
|
|
7529
|
+
"application/json": {
|
|
7530
|
+
data: components["schemas"]["AssignmentsSummaryDto"];
|
|
7531
|
+
};
|
|
7345
7532
|
};
|
|
7346
7533
|
};
|
|
7347
7534
|
/** @description Invalid or expired token */
|
|
@@ -7407,7 +7594,9 @@ interface operations {
|
|
|
7407
7594
|
[name: string]: unknown;
|
|
7408
7595
|
};
|
|
7409
7596
|
content: {
|
|
7410
|
-
"application/json":
|
|
7597
|
+
"application/json": {
|
|
7598
|
+
data: components["schemas"]["AssignmentResponseDto"];
|
|
7599
|
+
};
|
|
7411
7600
|
};
|
|
7412
7601
|
};
|
|
7413
7602
|
/** @description System roles cannot be assigned to identities — they are reserved for platform administration */
|
|
@@ -7600,7 +7789,9 @@ interface operations {
|
|
|
7600
7789
|
[name: string]: unknown;
|
|
7601
7790
|
};
|
|
7602
7791
|
content: {
|
|
7603
|
-
"application/json":
|
|
7792
|
+
"application/json": {
|
|
7793
|
+
data: components["schemas"]["AssignmentResponseDto"];
|
|
7794
|
+
};
|
|
7604
7795
|
};
|
|
7605
7796
|
};
|
|
7606
7797
|
/** @description System roles cannot be assigned to identities — they are reserved for platform administration */
|
|
@@ -7772,7 +7963,9 @@ interface operations {
|
|
|
7772
7963
|
[name: string]: unknown;
|
|
7773
7964
|
};
|
|
7774
7965
|
content: {
|
|
7775
|
-
"application/json":
|
|
7966
|
+
"application/json": {
|
|
7967
|
+
data: components["schemas"]["MessageResponseDto"];
|
|
7968
|
+
};
|
|
7776
7969
|
};
|
|
7777
7970
|
};
|
|
7778
7971
|
/** @description System roles cannot be assigned to identities — they are reserved for platform administration */
|
|
@@ -8160,7 +8353,9 @@ interface operations {
|
|
|
8160
8353
|
[name: string]: unknown;
|
|
8161
8354
|
};
|
|
8162
8355
|
content: {
|
|
8163
|
-
"application/json":
|
|
8356
|
+
"application/json": {
|
|
8357
|
+
data: components["schemas"]["ExportJobDto"];
|
|
8358
|
+
};
|
|
8164
8359
|
};
|
|
8165
8360
|
};
|
|
8166
8361
|
/** @description Invalid or expired token */
|
|
@@ -8224,7 +8419,9 @@ interface operations {
|
|
|
8224
8419
|
[name: string]: unknown;
|
|
8225
8420
|
};
|
|
8226
8421
|
content: {
|
|
8227
|
-
"application/json":
|
|
8422
|
+
"application/json": {
|
|
8423
|
+
data: components["schemas"]["ExportJobDto"];
|
|
8424
|
+
};
|
|
8228
8425
|
};
|
|
8229
8426
|
};
|
|
8230
8427
|
/** @description Invalid or expired token */
|
|
@@ -8392,7 +8589,9 @@ interface operations {
|
|
|
8392
8589
|
[name: string]: unknown;
|
|
8393
8590
|
};
|
|
8394
8591
|
content: {
|
|
8395
|
-
"application/json":
|
|
8592
|
+
"application/json": {
|
|
8593
|
+
data: components["schemas"]["AuditLogDetailResponseDto"];
|
|
8594
|
+
};
|
|
8396
8595
|
};
|
|
8397
8596
|
};
|
|
8398
8597
|
/** @description Invalid or expired token */
|
|
@@ -8569,7 +8768,9 @@ interface operations {
|
|
|
8569
8768
|
[name: string]: unknown;
|
|
8570
8769
|
};
|
|
8571
8770
|
content: {
|
|
8572
|
-
"application/json":
|
|
8771
|
+
"application/json": {
|
|
8772
|
+
data: components["schemas"]["HierarchySchemaResponseDto"];
|
|
8773
|
+
};
|
|
8573
8774
|
};
|
|
8574
8775
|
};
|
|
8575
8776
|
/** @description Invalid or expired token */
|
|
@@ -8639,7 +8840,9 @@ interface operations {
|
|
|
8639
8840
|
[name: string]: unknown;
|
|
8640
8841
|
};
|
|
8641
8842
|
content: {
|
|
8642
|
-
"application/json":
|
|
8843
|
+
"application/json": {
|
|
8844
|
+
data: components["schemas"]["HierarchySchemaResponseDto"];
|
|
8845
|
+
};
|
|
8643
8846
|
};
|
|
8644
8847
|
};
|
|
8645
8848
|
/** @description Invalid or expired token */
|
|
@@ -8802,7 +9005,9 @@ interface operations {
|
|
|
8802
9005
|
[name: string]: unknown;
|
|
8803
9006
|
};
|
|
8804
9007
|
content: {
|
|
8805
|
-
"application/json":
|
|
9008
|
+
"application/json": {
|
|
9009
|
+
data: components["schemas"]["WebhookCreatedResponseDto"];
|
|
9010
|
+
};
|
|
8806
9011
|
};
|
|
8807
9012
|
};
|
|
8808
9013
|
/** @description One or more event types are not supported */
|
|
@@ -9050,7 +9255,9 @@ interface operations {
|
|
|
9050
9255
|
[name: string]: unknown;
|
|
9051
9256
|
};
|
|
9052
9257
|
content: {
|
|
9053
|
-
"application/json":
|
|
9258
|
+
"application/json": {
|
|
9259
|
+
data: components["schemas"]["WebhookResponseDto"];
|
|
9260
|
+
};
|
|
9054
9261
|
};
|
|
9055
9262
|
};
|
|
9056
9263
|
/** @description Invalid or expired token */
|
|
@@ -9222,7 +9429,9 @@ interface operations {
|
|
|
9222
9429
|
[name: string]: unknown;
|
|
9223
9430
|
};
|
|
9224
9431
|
content: {
|
|
9225
|
-
"application/json":
|
|
9432
|
+
"application/json": {
|
|
9433
|
+
data: components["schemas"]["WebhookResponseDto"];
|
|
9434
|
+
};
|
|
9226
9435
|
};
|
|
9227
9436
|
};
|
|
9228
9437
|
/** @description One or more event types are not supported */
|
|
@@ -9406,7 +9615,9 @@ interface operations {
|
|
|
9406
9615
|
[name: string]: unknown;
|
|
9407
9616
|
};
|
|
9408
9617
|
content: {
|
|
9409
|
-
"application/json":
|
|
9618
|
+
"application/json": {
|
|
9619
|
+
data: components["schemas"]["ApiKeyCreatedResponseDto"];
|
|
9620
|
+
};
|
|
9410
9621
|
};
|
|
9411
9622
|
};
|
|
9412
9623
|
/** @description Invalid or expired token */
|
|
@@ -9557,7 +9768,9 @@ interface operations {
|
|
|
9557
9768
|
[name: string]: unknown;
|
|
9558
9769
|
};
|
|
9559
9770
|
content: {
|
|
9560
|
-
"application/json":
|
|
9771
|
+
"application/json": {
|
|
9772
|
+
data: components["schemas"]["ApiKeyResponseDto"];
|
|
9773
|
+
};
|
|
9561
9774
|
};
|
|
9562
9775
|
};
|
|
9563
9776
|
/** @description Invalid or expired token */
|
|
@@ -9642,7 +9855,9 @@ interface operations {
|
|
|
9642
9855
|
[name: string]: unknown;
|
|
9643
9856
|
};
|
|
9644
9857
|
content: {
|
|
9645
|
-
"application/json":
|
|
9858
|
+
"application/json": {
|
|
9859
|
+
data: components["schemas"]["ApiKeyCreatedResponseDto"];
|
|
9860
|
+
};
|
|
9646
9861
|
};
|
|
9647
9862
|
};
|
|
9648
9863
|
/** @description Invalid or expired token */
|
|
@@ -10075,10 +10290,26 @@ declare class LocalAuthorizer {
|
|
|
10075
10290
|
/** Counters for observability — how much traffic the cache is actually saving. */
|
|
10076
10291
|
snapshot(): LocalAuthorizerStats;
|
|
10077
10292
|
/**
|
|
10078
|
-
* Drop
|
|
10079
|
-
*
|
|
10293
|
+
* Drop what is held so the next evaluate refetches.
|
|
10294
|
+
*
|
|
10295
|
+
* With an `identityId`, only that identity's grants are dropped — the
|
|
10296
|
+
* cached hierarchy and every other identity's entries stay warm. This is
|
|
10297
|
+
* the shape an assignment webhook wants: the event names the identity
|
|
10298
|
+
* whose authority moved, and nothing else needs to pay a refetch for it.
|
|
10299
|
+
*
|
|
10300
|
+
* With no argument, everything goes: grants and the hierarchy tree. Not
|
|
10301
|
+
* needed in normal operation, where entries expire on their own; useful in
|
|
10302
|
+
* tests and after a change whose reach you cannot name (a role's
|
|
10303
|
+
* permissions edited, a node moved).
|
|
10304
|
+
*
|
|
10305
|
+
* Multi-instance honesty: an invalidation reaches THIS process only. A
|
|
10306
|
+
* webhook lands on one instance behind a load balancer; the others serve
|
|
10307
|
+
* their cached grants until their own TTL expires. Unless the app fans the
|
|
10308
|
+
* event out over its own pub/sub, the fleet-wide revocation guarantee is
|
|
10309
|
+
* the TTL, and webhook-driven invalidation is a latency optimization on
|
|
10310
|
+
* top of it — size the TTL to the revocation latency you can promise.
|
|
10080
10311
|
*/
|
|
10081
|
-
invalidate(): void;
|
|
10312
|
+
invalidate(identityId?: string): void;
|
|
10082
10313
|
/** Climb from `nodeId` and look for a grant root among its ancestors. */
|
|
10083
10314
|
private holdsAtNode;
|
|
10084
10315
|
private grantRootsFor;
|