@canopy-io/node 0.8.0 → 0.10.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/CHANGELOG.md +27 -0
- package/README.md +25 -4
- package/dist/index.cjs +168 -37
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +253 -130
- package/dist/index.d.ts +253 -130
- package/dist/index.js +168 -37
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -378,7 +378,7 @@ interface paths {
|
|
|
378
378
|
put?: never;
|
|
379
379
|
/**
|
|
380
380
|
* Bulk evaluate authorization
|
|
381
|
-
* @description Evaluates
|
|
381
|
+
* @description Evaluates up to 100 permission checks in a single request (more is refused with `400`), returning a `{ items }` array of decisions in the same order as the input `checks`, each with the same shape as the single evaluate endpoint. Every check is resolved independently against its own `identity_id`, `permission`, and `scope` (`node` lineage walk or `app_wide`). Scoped API keys must carry the evaluate scope (`403` otherwise). Rate-limited to 500 requests/minute.
|
|
382
382
|
*/
|
|
383
383
|
post: operations["ApiPermissionsController_evaluateBulk"];
|
|
384
384
|
delete?: never;
|
|
@@ -588,7 +588,7 @@ interface paths {
|
|
|
588
588
|
};
|
|
589
589
|
/**
|
|
590
590
|
* List an identity's active sessions (admin)
|
|
591
|
-
* @description Lists an identity's active sessions in the caller's Environment (server-to-server admin): the rows a customer reads to confirm from its own side that a sign-out took, or to show a person where they are signed in. Each row is a session's current refresh token, so `id` changes on every refresh. Sessions the identity holds in its other Environments are not listed. Returns `404` when the identity has no membership in this Environment.
|
|
591
|
+
* @description Lists one page of an identity's active sessions in the caller's Environment (server-to-server admin), newest first, taking `page` and `take` only: the rows a customer reads to confirm from its own side that a sign-out took, or to show a person where they are signed in. Each row is a session's current refresh token, so `id` changes on every refresh. Sessions the identity holds in its other Environments are not listed. Returns `404` when the identity has no membership in this Environment.
|
|
592
592
|
*/
|
|
593
593
|
get: operations["ApiIdentitiesController_listIdentitySessions"];
|
|
594
594
|
put?: never;
|
|
@@ -768,7 +768,7 @@ interface paths {
|
|
|
768
768
|
};
|
|
769
769
|
/**
|
|
770
770
|
* Get where an identity holds each permission
|
|
771
|
-
* @description Returns, for the current Environment, every permission the identity holds
|
|
771
|
+
* @description Returns, for the current Environment, one page of `(permission, node_id)` rows: every permission the identity holds, paired with each hierarchy node its grants were made at — the nodes themselves, **not** expanded through their descendants. Rows are ordered by permission, then node; a caller building the whole map walks every page. A grant already means "this node and everything beneath it", so a caller answers a node-scoped question by walking up from the node in question and looking for one of these roots, using a copy of the parent edges fetched once from `GET /api/v1/nodes/parents` and shared across identities. Answers both scopes without a further call: the permission appearing at all is the Application-wide answer, and the walk is the node-scoped one. Scheduled assignments outside their effective window are excluded. Returns `404` when the identity has no membership in this Environment.
|
|
772
772
|
*/
|
|
773
773
|
get: operations["ApiIdentitiesController_getIdentityGrants"];
|
|
774
774
|
put?: never;
|
|
@@ -891,8 +891,8 @@ interface paths {
|
|
|
891
891
|
cookie?: never;
|
|
892
892
|
};
|
|
893
893
|
/**
|
|
894
|
-
* List hierarchy (scoped
|
|
895
|
-
* @description Returns the caller's
|
|
894
|
+
* List hierarchy nodes (scoped, paged)
|
|
895
|
+
* @description Returns one page of the caller's hierarchy for the current Environment as a flat list, each node carrying its `parent_node_id` and annotated with `access_state`, `can_access`, `can_manage` and its identity counts. A caller rebuilding the tree walks every page and links each node to its parent; a node whose parent is not in the listing is a top of the caller's scope. `user` principals (dashboard), which need the Console capability covering `hierarchy.view`, see every node; API-key principals see only what their `access_mode`/scopes grant — `full_access` unlocks everything, while scoped keys see nodes reachable via `hierarchy.view`. `context_only` nodes are the ancestors shown as the path to the caller's scope. Searches names and slugs with `q`; sorts by `name` or `created` (default, oldest first).
|
|
896
896
|
*/
|
|
897
897
|
get: operations["ApiNodesController_listNodes"];
|
|
898
898
|
put?: never;
|
|
@@ -916,7 +916,7 @@ interface paths {
|
|
|
916
916
|
};
|
|
917
917
|
/**
|
|
918
918
|
* List the hierarchy as parent edges
|
|
919
|
-
* @description Returns the same hierarchy `GET /api/v1/nodes` describes, scoped identically, but as
|
|
919
|
+
* @description Returns the same hierarchy `GET /api/v1/nodes` describes, scoped identically, but as `{ id, parent_node_id }` pairs and nothing else, one page at a time, ordered by node id. Intended for a client that evaluates authorization locally: it walks every page into a child-to-parent map and reads none of the nodes' names, statuses, access flags or counts. At fifty thousand nodes the full listing is roughly 18.6 MB against 4 MB of edges, on a read that runs at every consuming process's startup. Supports the same `If-None-Match` revalidation, with a validator distinct from the node listing's and from every other page's: a tag from one representation or page never satisfies a request for another. A `304` on the first page means the whole hierarchy is unchanged.
|
|
920
920
|
*/
|
|
921
921
|
get: operations["ApiNodesController_listNodeParents"];
|
|
922
922
|
put?: never;
|
|
@@ -964,7 +964,7 @@ interface paths {
|
|
|
964
964
|
};
|
|
965
965
|
/**
|
|
966
966
|
* Get subtree from a node
|
|
967
|
-
* @description Returns
|
|
967
|
+
* @description Returns one page of the given node and its descendants within the caller's scope in the current Environment, flat, each node carrying its `parent_node_id` and the same access annotations and counts as `GET /api/v1/nodes`. The node must be within the caller's accessible scope (otherwise `403`). Searches names and slugs with `q`; sorts by `name` or `created` (default, oldest first).
|
|
968
968
|
*/
|
|
969
969
|
get: operations["ApiNodesController_getSubtree"];
|
|
970
970
|
put?: never;
|
|
@@ -1004,7 +1004,7 @@ interface paths {
|
|
|
1004
1004
|
};
|
|
1005
1005
|
/**
|
|
1006
1006
|
* Get direct children of a node
|
|
1007
|
-
* @description Returns
|
|
1007
|
+
* @description Returns one page of a node's direct children (one level only, not the full subtree) in the current Environment. The node must be within the caller's accessible scope, otherwise `403` is returned. Searches names and slugs with `q`; sorts by `name` or `created` (default, oldest first).
|
|
1008
1008
|
*/
|
|
1009
1009
|
get: operations["ApiNodesController_getChildren"];
|
|
1010
1010
|
put?: never;
|
|
@@ -1338,7 +1338,7 @@ interface paths {
|
|
|
1338
1338
|
put?: never;
|
|
1339
1339
|
/**
|
|
1340
1340
|
* Add a member to an organization
|
|
1341
|
-
* @description Adds a member: assigns `role_id` to `identity_id` at the organization. The identity must already hold an active membership in this Environment (invite by email instead for someone who does not). A member holds exactly one role per organization, so an identity that is already a member returns `409` — use the change-role operation. Requires the `rbac.manage_assignments` permission at the organization and emits `organization.member.added`.
|
|
1341
|
+
* @description Adds a member: assigns `role_id` to `identity_id` at the organization. The identity must already hold an active membership in this Environment (invite by email instead for someone who does not). A member holds exactly one role per organization, so an identity that is already a member returns `409` — use the change-role operation. Requires the `rbac.manage_assignments` permission at the organization and emits `organization.member.added`. An organization's own administrator, signed in with an identity token and admitted by `canopy:organization.manage` alone, is refused with `403` (`organization.member_add_requires_invite`): the person never agreed to join, so the administrator invites them instead.
|
|
1342
1342
|
*/
|
|
1343
1343
|
post: operations["ApiOrganizationsController_addMember"];
|
|
1344
1344
|
delete?: never;
|
|
@@ -1382,7 +1382,7 @@ interface paths {
|
|
|
1382
1382
|
put?: never;
|
|
1383
1383
|
/**
|
|
1384
1384
|
* Reset a member's multi-factor authentication
|
|
1385
|
-
* @description The organization's own administrator, or the developer, clears a member's multi-factor enrolment: every factor
|
|
1385
|
+
* @description The organization's own administrator, or the developer, clears a member's multi-factor enrolment: every factor and the recovery codes, held once per identity, and the devices trusted in this Environment, so the person enrols afresh at their next sign-in. For a member who lost their authenticator. Sessions already open are left alone. Audited as `identity.mfa.admin.forced_reset`. Returns `404` when the identity is not a member. Responds `204 No Content`; requires `hierarchy.manage` or `canopy:organization.manage` at the organization.
|
|
1386
1386
|
*/
|
|
1387
1387
|
post: operations["ApiOrganizationsController_resetMemberMfa"];
|
|
1388
1388
|
delete?: never;
|
|
@@ -1752,7 +1752,7 @@ interface paths {
|
|
|
1752
1752
|
};
|
|
1753
1753
|
/**
|
|
1754
1754
|
* List the groups an organization's provider has pushed
|
|
1755
|
-
* @description
|
|
1755
|
+
* @description One page of pushed groups, each with its role mapping and member count, by display name unless sorted (`sort_by` `name` or `created`); `q` searches display names and external ids
|
|
1756
1756
|
*/
|
|
1757
1757
|
get: operations["ApiOrganizationDirectoryGroupsController_list"];
|
|
1758
1758
|
put?: never;
|
|
@@ -2270,7 +2270,7 @@ interface paths {
|
|
|
2270
2270
|
put?: never;
|
|
2271
2271
|
/**
|
|
2272
2272
|
* Register a new OAuth client
|
|
2273
|
-
* @description Registers a new confidential OAuth client in the current Environment with the given `name`, `redirect_uris`, and optional `scopes` (defaulting to `openid profile email`). Generates the `client_id` and a `client_secret` that is bcrypt-hashed at rest; the raw secret is returned in this response only and is never retrievable again. Responds `201 Created`.
|
|
2273
|
+
* @description Registers a new confidential OAuth client in the current Environment with the given `name`, `redirect_uris`, and optional `scopes` (defaulting to `openid profile email`), each one of `openid`, `profile`, `email`, `org` and `permissions`; any other value is refused with `400` (`oauth.client_scope_unknown`). Generates the `client_id` and a `client_secret` that is bcrypt-hashed at rest; the raw secret is returned in this response only and is never retrievable again. Responds `201 Created`.
|
|
2274
2274
|
*/
|
|
2275
2275
|
post: operations["ApiOAuthClientsController_create"];
|
|
2276
2276
|
delete?: never;
|
|
@@ -2322,7 +2322,7 @@ interface paths {
|
|
|
2322
2322
|
head?: never;
|
|
2323
2323
|
/**
|
|
2324
2324
|
* Update OAuth client
|
|
2325
|
-
* @description Updates an OAuth client's mutable fields (`name`, `redirect_uris`, `post_logout_redirect_uris`, `backchannel_logout_uri`, `scopes`, `is_active`, `invite_redirect_url`, `initiate_login_uri`), scoped to the current Environment. Returns the updated client, or `404` when the client is not found in this Environment. The secret is not rotated here.
|
|
2325
|
+
* @description Updates an OAuth client's mutable fields (`name`, `redirect_uris`, `post_logout_redirect_uris`, `backchannel_logout_uri`, `scopes`, `is_active`, `invite_redirect_url`, `initiate_login_uri`), scoped to the current Environment. A `scopes` value outside `openid`, `profile`, `email`, `org` and `permissions` is refused with `400` (`oauth.client_scope_unknown`). Returns the updated client, or `404` when the client is not found in this Environment. The secret is not rotated here.
|
|
2326
2326
|
*/
|
|
2327
2327
|
patch: operations["ApiOAuthClientsController_update"];
|
|
2328
2328
|
trace?: never;
|
|
@@ -2383,14 +2383,14 @@ interface paths {
|
|
|
2383
2383
|
post?: never;
|
|
2384
2384
|
/**
|
|
2385
2385
|
* Delete an API key
|
|
2386
|
-
* @description Permanently deletes an API key from the active Environment. The row is removed entirely rather than just disabled, so the key can never authenticate again and disappears from listings; the lifecycle remains traceable in the audit log. Returns `204 No Content` on success and `404` when no key with the given id exists in the active Environment.
|
|
2386
|
+
* @description Permanently deletes an API key from the active Environment. The row is removed entirely rather than just disabled, so the key can never authenticate again and disappears from listings; the lifecycle remains traceable in the audit log. Returns `204 No Content` on success and `404` when no key with the given id exists in the active Environment. A scoped API key can act only on scoped keys whose scopes it holds itself; any other key is refused with `403`.
|
|
2387
2387
|
*/
|
|
2388
2388
|
delete: operations["ApiApiKeysController_delete"];
|
|
2389
2389
|
options?: never;
|
|
2390
2390
|
head?: never;
|
|
2391
2391
|
/**
|
|
2392
2392
|
* Activate or deactivate an API key
|
|
2393
|
-
* @description Enables or disables an existing API key in the current Environment via the `is_active` flag. Disabling is reversible: a disabled key is rejected by authentication immediately and can be re-enabled later. Returns the key's metadata with no secret. Returns `404` when no key with the given id exists in the active Environment.
|
|
2393
|
+
* @description Enables or disables an existing API key in the current Environment via the `is_active` flag. Disabling is reversible: a disabled key is rejected by authentication immediately and can be re-enabled later. Returns the key's metadata with no secret. Returns `404` when no key with the given id exists in the active Environment. A scoped API key can act only on scoped keys whose scopes it holds itself; any other key is refused with `403`.
|
|
2394
2394
|
*/
|
|
2395
2395
|
patch: operations["ApiApiKeysController_update"];
|
|
2396
2396
|
trace?: never;
|
|
@@ -2406,7 +2406,7 @@ interface paths {
|
|
|
2406
2406
|
put?: never;
|
|
2407
2407
|
/**
|
|
2408
2408
|
* Rotate an API key's secret
|
|
2409
|
-
* @description Rotates the secret of an existing API key in place, minting a brand-new `cnpy_`-prefixed value for the same row while preserving its id, name, `scopes`, `access_mode`, expiry, and audit lineage. The previous secret is invalidated immediately and the new plaintext is returned exactly once in the `key` field. `is_active` is left untouched — rotating does not re-enable a disabled key. Returns `404` when no key with the given id exists in the active Environment.
|
|
2409
|
+
* @description Rotates the secret of an existing API key in place, minting a brand-new `cnpy_`-prefixed value for the same row while preserving its id, name, `scopes`, `access_mode`, expiry, and audit lineage. The previous secret is invalidated immediately and the new plaintext is returned exactly once in the `key` field. `is_active` is left untouched — rotating does not re-enable a disabled key. Returns `404` when no key with the given id exists in the active Environment. A scoped API key can act only on scoped keys whose scopes it holds itself; any other key is refused with `403`.
|
|
2410
2410
|
*/
|
|
2411
2411
|
post: operations["ApiApiKeysController_rotateSecret"];
|
|
2412
2412
|
delete?: never;
|
|
@@ -2476,11 +2476,11 @@ interface components {
|
|
|
2476
2476
|
allowed: boolean;
|
|
2477
2477
|
permission: string;
|
|
2478
2478
|
/**
|
|
2479
|
-
* @description Echo of the `scope` the caller asked for. `app_wide` answers are 'matched somewhere in the
|
|
2479
|
+
* @description Echo of the `scope` the caller asked for. `app_wide` answers are 'matched somewhere in the Environment' — never treat them as scoped to a specific node.
|
|
2480
2480
|
* @enum {string}
|
|
2481
2481
|
*/
|
|
2482
2482
|
scope_evaluated: "node" | "app_wide";
|
|
2483
|
-
/** @description The hierarchy node the decision was anchored to. Always set for `scope_evaluated: "node"`; always null for `scope_evaluated: "app_wide"` because the answer
|
|
2483
|
+
/** @description The hierarchy node the decision was anchored to. Always set for `scope_evaluated: "node"`; always null for `scope_evaluated: "app_wide"` because the answer covers the whole Environment, not one node. */
|
|
2484
2484
|
effective_node_id?: string | null;
|
|
2485
2485
|
/** @description Ids of the roles whose assignments produced a node-scoped allow. Always empty for `scope_evaluated: "app_wide"`, whose answer is not tied to a node, and for a deny. */
|
|
2486
2486
|
granting_roles: string[];
|
|
@@ -2491,7 +2491,7 @@ interface components {
|
|
|
2491
2491
|
identity_id: string;
|
|
2492
2492
|
permission: string;
|
|
2493
2493
|
/**
|
|
2494
|
-
* @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
|
|
2494
|
+
* @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 Environment?' question — useful for UI gating, **never** for resource-scoped enforcement. `node` requires `node_id`; `app_wide` forbids it.
|
|
2495
2495
|
* @enum {string}
|
|
2496
2496
|
*/
|
|
2497
2497
|
scope: "node" | "app_wide";
|
|
@@ -2503,7 +2503,7 @@ interface components {
|
|
|
2503
2503
|
identity_id: string;
|
|
2504
2504
|
permission: string;
|
|
2505
2505
|
/**
|
|
2506
|
-
* @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
|
|
2506
|
+
* @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 Environment?' question — useful for UI gating, **never** for resource-scoped enforcement. `node` requires `node_id`; `app_wide` forbids it.
|
|
2507
2507
|
* @enum {string}
|
|
2508
2508
|
*/
|
|
2509
2509
|
scope: "node" | "app_wide";
|
|
@@ -2511,6 +2511,7 @@ interface components {
|
|
|
2511
2511
|
node_id?: string;
|
|
2512
2512
|
};
|
|
2513
2513
|
BulkEvaluatePermissionDto: {
|
|
2514
|
+
/** @description Between 1 and 100 checks. More is refused with a 400. */
|
|
2514
2515
|
checks: components["schemas"]["EvaluateCheckDto"][];
|
|
2515
2516
|
};
|
|
2516
2517
|
PermissionTraceAssignmentDto: {
|
|
@@ -2741,8 +2742,11 @@ interface components {
|
|
|
2741
2742
|
IdentityGrantResponseDto: {
|
|
2742
2743
|
/** @example reports.view */
|
|
2743
2744
|
permission: string;
|
|
2744
|
-
/**
|
|
2745
|
-
|
|
2745
|
+
/**
|
|
2746
|
+
* Format: uuid
|
|
2747
|
+
* @description The hierarchy node the permission was granted at. Not expanded through descendants.
|
|
2748
|
+
*/
|
|
2749
|
+
node_id: string;
|
|
2746
2750
|
};
|
|
2747
2751
|
IdentityInviteResponseDto: {
|
|
2748
2752
|
id: string;
|
|
@@ -2862,7 +2866,7 @@ interface components {
|
|
|
2862
2866
|
/** @description Arbitrary metadata */
|
|
2863
2867
|
metadata?: Record<string, unknown>;
|
|
2864
2868
|
};
|
|
2865
|
-
|
|
2869
|
+
ScopedNodeResponseDto: {
|
|
2866
2870
|
id: string;
|
|
2867
2871
|
name: string;
|
|
2868
2872
|
/** @description Optional free-text description shown under the node name. */
|
|
@@ -2876,7 +2880,6 @@ interface components {
|
|
|
2876
2880
|
access_state: "accessible" | "context_only";
|
|
2877
2881
|
can_access: boolean;
|
|
2878
2882
|
can_manage: boolean;
|
|
2879
|
-
children: components["schemas"]["HierarchyTreeNodeDto"][];
|
|
2880
2883
|
/** @description Optimistic-lock version. Send back as the `If-Match` header when mutating this node to detect concurrent edits. */
|
|
2881
2884
|
version: number;
|
|
2882
2885
|
/** @description Distinct active identities directly assigned at this node (excludes inherited). */
|
|
@@ -2884,15 +2887,6 @@ interface components {
|
|
|
2884
2887
|
/** @description Distinct active identities inherited from this node's ancestors. */
|
|
2885
2888
|
inherited_count: number;
|
|
2886
2889
|
};
|
|
2887
|
-
HierarchyScopeDto: {
|
|
2888
|
-
accessible_node_ids: string[];
|
|
2889
|
-
scope_root_node_ids: string[];
|
|
2890
|
-
entry_node_ids: string[];
|
|
2891
|
-
};
|
|
2892
|
-
ScopedHierarchyTreeResponseDto: {
|
|
2893
|
-
tree: components["schemas"]["HierarchyTreeNodeDto"][];
|
|
2894
|
-
scope: components["schemas"]["HierarchyScopeDto"];
|
|
2895
|
-
};
|
|
2896
2890
|
NodeParentEdgeResponseDto: {
|
|
2897
2891
|
id: string;
|
|
2898
2892
|
/** @description Null for the root node, which has no parent. */
|
|
@@ -6276,12 +6270,14 @@ interface operations {
|
|
|
6276
6270
|
page?: number;
|
|
6277
6271
|
/** @description Items per page (1-100, default 20) */
|
|
6278
6272
|
take?: number;
|
|
6279
|
-
/** @description Search
|
|
6273
|
+
/** @description Search names and emails */
|
|
6280
6274
|
q?: string;
|
|
6281
|
-
/** @description
|
|
6282
|
-
sort_by?:
|
|
6275
|
+
/** @description Sort column. Defaults to `name`, A to Z. */
|
|
6276
|
+
sort_by?: "name" | "email" | "created";
|
|
6283
6277
|
/** @description Sort direction */
|
|
6284
6278
|
order?: "asc" | "desc";
|
|
6279
|
+
/** @description Filter by active/inactive status. Omit to show all. */
|
|
6280
|
+
status?: "active" | "inactive";
|
|
6285
6281
|
};
|
|
6286
6282
|
header?: never;
|
|
6287
6283
|
path?: never;
|
|
@@ -6474,7 +6470,7 @@ interface operations {
|
|
|
6474
6470
|
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
6475
6471
|
};
|
|
6476
6472
|
};
|
|
6477
|
-
/** @description The email or external_id already belongs to an identity in this Account,
|
|
6473
|
+
/** @description The email or external_id already belongs to an identity in this Account, the Account has reached its plan's identity signup ceiling, or the starting role is placed beneath an organization, where a new identity holds no membership yet */
|
|
6478
6474
|
409: {
|
|
6479
6475
|
headers: {
|
|
6480
6476
|
[name: string]: unknown;
|
|
@@ -6485,7 +6481,7 @@ interface operations {
|
|
|
6485
6481
|
* "error": {
|
|
6486
6482
|
* "statusCode": 409,
|
|
6487
6483
|
* "code": null,
|
|
6488
|
-
* "message": "The email or external_id already belongs to an identity in this Account,
|
|
6484
|
+
* "message": "The email or external_id already belongs to an identity in this Account, the Account has reached its plan's identity signup ceiling, or the starting role is placed beneath an organization, where a new identity holds no membership yet",
|
|
6489
6485
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
6490
6486
|
* "path": "/api/v1/identities",
|
|
6491
6487
|
* "method": "POST"
|
|
@@ -6504,16 +6500,16 @@ interface operations {
|
|
|
6504
6500
|
page?: number;
|
|
6505
6501
|
/** @description Items per page (1-100, default 20) */
|
|
6506
6502
|
take?: number;
|
|
6507
|
-
/** @description Search
|
|
6503
|
+
/** @description Search names and emails */
|
|
6508
6504
|
q?: string;
|
|
6509
|
-
/** @description
|
|
6510
|
-
sort_by?:
|
|
6505
|
+
/** @description Sort column. Defaults to `name`, A to Z. */
|
|
6506
|
+
sort_by?: "name" | "email" | "created";
|
|
6511
6507
|
/** @description Sort direction */
|
|
6512
6508
|
order?: "asc" | "desc";
|
|
6513
|
-
/** @description Filter by role ID (UUID) or "no_assignment" for unassigned identities */
|
|
6514
|
-
role_id?: string;
|
|
6515
6509
|
/** @description Filter by active/inactive status. Omit to show all. */
|
|
6516
6510
|
status?: "active" | "inactive";
|
|
6511
|
+
/** @description Filter by role ID (UUID) or "no_assignment" for unassigned identities */
|
|
6512
|
+
role_id?: string;
|
|
6517
6513
|
};
|
|
6518
6514
|
header?: never;
|
|
6519
6515
|
path?: never;
|
|
@@ -7495,7 +7491,12 @@ interface operations {
|
|
|
7495
7491
|
};
|
|
7496
7492
|
ApiIdentitiesController_listIdentitySessions: {
|
|
7497
7493
|
parameters: {
|
|
7498
|
-
query?:
|
|
7494
|
+
query?: {
|
|
7495
|
+
/** @description Page number (1-based) */
|
|
7496
|
+
page?: number;
|
|
7497
|
+
/** @description Items per page (1-100, default 20) */
|
|
7498
|
+
take?: number;
|
|
7499
|
+
};
|
|
7499
7500
|
header?: never;
|
|
7500
7501
|
path: {
|
|
7501
7502
|
id: string;
|
|
@@ -7504,7 +7505,7 @@ interface operations {
|
|
|
7504
7505
|
};
|
|
7505
7506
|
requestBody?: never;
|
|
7506
7507
|
responses: {
|
|
7507
|
-
/** @description
|
|
7508
|
+
/** @description One page of the sessions the identity holds that are neither revoked nor expired, newest first: the session's current refresh token id (what the per-session revoke takes), when it was signed in and when it expires, the browser's address and user agent, and the organization it is acting in. */
|
|
7508
7509
|
200: {
|
|
7509
7510
|
headers: {
|
|
7510
7511
|
[name: string]: unknown;
|
|
@@ -7512,6 +7513,7 @@ interface operations {
|
|
|
7512
7513
|
content: {
|
|
7513
7514
|
"application/json": {
|
|
7514
7515
|
items: components["schemas"]["IdentitySessionResponseDto"][];
|
|
7516
|
+
pagination: components["schemas"]["PageMetaDto"];
|
|
7515
7517
|
};
|
|
7516
7518
|
};
|
|
7517
7519
|
};
|
|
@@ -8241,10 +8243,10 @@ interface operations {
|
|
|
8241
8243
|
page?: number;
|
|
8242
8244
|
/** @description Items per page (1-100, default 20) */
|
|
8243
8245
|
take?: number;
|
|
8244
|
-
/** @description Search
|
|
8246
|
+
/** @description Search role and node names */
|
|
8245
8247
|
q?: string;
|
|
8246
|
-
/** @description
|
|
8247
|
-
sort_by?:
|
|
8248
|
+
/** @description Sort column. Defaults to `created`, oldest first. */
|
|
8249
|
+
sort_by?: "role" | "node" | "created";
|
|
8248
8250
|
/** @description Sort direction */
|
|
8249
8251
|
order?: "asc" | "desc";
|
|
8250
8252
|
};
|
|
@@ -8464,7 +8466,12 @@ interface operations {
|
|
|
8464
8466
|
};
|
|
8465
8467
|
ApiIdentitiesController_getIdentityGrants: {
|
|
8466
8468
|
parameters: {
|
|
8467
|
-
query?:
|
|
8469
|
+
query?: {
|
|
8470
|
+
/** @description Page number (1-based) */
|
|
8471
|
+
page?: number;
|
|
8472
|
+
/** @description Items per page (1-100, default 20) */
|
|
8473
|
+
take?: number;
|
|
8474
|
+
};
|
|
8468
8475
|
header?: never;
|
|
8469
8476
|
path: {
|
|
8470
8477
|
id: string;
|
|
@@ -8473,14 +8480,17 @@ interface operations {
|
|
|
8473
8480
|
};
|
|
8474
8481
|
requestBody?: never;
|
|
8475
8482
|
responses: {
|
|
8476
|
-
/** @description
|
|
8483
|
+
/** @description One page of grant roots, one row per permission and node, ordered by permission then node */
|
|
8477
8484
|
200: {
|
|
8478
8485
|
headers: {
|
|
8479
8486
|
[name: string]: unknown;
|
|
8480
8487
|
};
|
|
8481
8488
|
content: {
|
|
8482
8489
|
"application/json": {
|
|
8490
|
+
/** @description The version of the authorization model these rows describe. A client that evaluates from them refuses a version it does not know rather than guessing. */
|
|
8491
|
+
model_version: number;
|
|
8483
8492
|
items: components["schemas"]["IdentityGrantResponseDto"][];
|
|
8493
|
+
pagination: components["schemas"]["PageMetaDto"];
|
|
8484
8494
|
};
|
|
8485
8495
|
};
|
|
8486
8496
|
};
|
|
@@ -9244,9 +9254,20 @@ interface operations {
|
|
|
9244
9254
|
};
|
|
9245
9255
|
ApiNodesController_listNodes: {
|
|
9246
9256
|
parameters: {
|
|
9247
|
-
query?:
|
|
9257
|
+
query?: {
|
|
9258
|
+
/** @description Page number (1-based) */
|
|
9259
|
+
page?: number;
|
|
9260
|
+
/** @description Items per page (1-100, default 20) */
|
|
9261
|
+
take?: number;
|
|
9262
|
+
/** @description Search node names and slugs */
|
|
9263
|
+
q?: string;
|
|
9264
|
+
/** @description Sort column. Defaults to `created`, oldest first. */
|
|
9265
|
+
sort_by?: "name" | "created";
|
|
9266
|
+
/** @description Sort direction */
|
|
9267
|
+
order?: "asc" | "desc";
|
|
9268
|
+
};
|
|
9248
9269
|
header?: {
|
|
9249
|
-
/** @description An `ETag` from a previous response. Answers `304 Not Modified` when the hierarchy has not changed since, so a client holding a cached
|
|
9270
|
+
/** @description An `ETag` from a previous response for the same page and query. Answers `304 Not Modified` when the hierarchy has not changed since, so a client holding a cached copy can revalidate on a short interval without re-reading it. */
|
|
9250
9271
|
"If-None-Match"?: string;
|
|
9251
9272
|
};
|
|
9252
9273
|
path?: never;
|
|
@@ -9254,25 +9275,26 @@ interface operations {
|
|
|
9254
9275
|
};
|
|
9255
9276
|
requestBody?: never;
|
|
9256
9277
|
responses: {
|
|
9257
|
-
/** @description
|
|
9278
|
+
/** @description One page of the caller's scoped nodes */
|
|
9258
9279
|
200: {
|
|
9259
9280
|
headers: {
|
|
9260
9281
|
[name: string]: unknown;
|
|
9261
9282
|
};
|
|
9262
9283
|
content: {
|
|
9263
9284
|
"application/json": {
|
|
9264
|
-
|
|
9285
|
+
items: components["schemas"]["ScopedNodeResponseDto"][];
|
|
9286
|
+
pagination: components["schemas"]["PageMetaDto"];
|
|
9265
9287
|
};
|
|
9266
9288
|
};
|
|
9267
9289
|
};
|
|
9268
|
-
/** @description The hierarchy is unchanged since the supplied `ETag`. No body; keep using the cached
|
|
9290
|
+
/** @description The hierarchy is unchanged since the supplied `ETag`. No body; keep using the cached copy. */
|
|
9269
9291
|
304: {
|
|
9270
9292
|
headers: {
|
|
9271
9293
|
[name: string]: unknown;
|
|
9272
9294
|
};
|
|
9273
9295
|
content?: never;
|
|
9274
9296
|
};
|
|
9275
|
-
/** @description The request sent both an `X-API-Key` and an `Authorization` header
|
|
9297
|
+
/** @description The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range; or the request sent both an `X-API-Key` and an `Authorization` header */
|
|
9276
9298
|
400: {
|
|
9277
9299
|
headers: {
|
|
9278
9300
|
[name: string]: unknown;
|
|
@@ -9283,7 +9305,7 @@ interface operations {
|
|
|
9283
9305
|
* "error": {
|
|
9284
9306
|
* "statusCode": 400,
|
|
9285
9307
|
* "code": null,
|
|
9286
|
-
* "message": "The request sent both an `X-API-Key` and an `Authorization` header
|
|
9308
|
+
* "message": "The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range; or the request sent both an `X-API-Key` and an `Authorization` header",
|
|
9287
9309
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
9288
9310
|
* "path": "/api/v1/nodes",
|
|
9289
9311
|
* "method": "GET"
|
|
@@ -9449,9 +9471,14 @@ interface operations {
|
|
|
9449
9471
|
};
|
|
9450
9472
|
ApiNodesController_listNodeParents: {
|
|
9451
9473
|
parameters: {
|
|
9452
|
-
query?:
|
|
9474
|
+
query?: {
|
|
9475
|
+
/** @description Page number (1-based) */
|
|
9476
|
+
page?: number;
|
|
9477
|
+
/** @description Items per page (1-100, default 20) */
|
|
9478
|
+
take?: number;
|
|
9479
|
+
};
|
|
9453
9480
|
header?: {
|
|
9454
|
-
/** @description An `ETag` from a previous response. Answers `304 Not Modified` when the hierarchy has not changed since, so a client holding a cached
|
|
9481
|
+
/** @description An `ETag` from a previous response for the same page and query. Answers `304 Not Modified` when the hierarchy has not changed since, so a client holding a cached copy can revalidate on a short interval without re-reading it. */
|
|
9455
9482
|
"If-None-Match"?: string;
|
|
9456
9483
|
};
|
|
9457
9484
|
path?: never;
|
|
@@ -9459,25 +9486,28 @@ interface operations {
|
|
|
9459
9486
|
};
|
|
9460
9487
|
requestBody?: never;
|
|
9461
9488
|
responses: {
|
|
9462
|
-
/** @description
|
|
9489
|
+
/** @description One page of parent edges, by node id */
|
|
9463
9490
|
200: {
|
|
9464
9491
|
headers: {
|
|
9465
9492
|
[name: string]: unknown;
|
|
9466
9493
|
};
|
|
9467
9494
|
content: {
|
|
9468
9495
|
"application/json": {
|
|
9496
|
+
/** @description The version of the authorization model these rows describe. A client that evaluates from them refuses a version it does not know rather than guessing. */
|
|
9497
|
+
model_version: number;
|
|
9469
9498
|
items: components["schemas"]["NodeParentEdgeResponseDto"][];
|
|
9499
|
+
pagination: components["schemas"]["PageMetaDto"];
|
|
9470
9500
|
};
|
|
9471
9501
|
};
|
|
9472
9502
|
};
|
|
9473
|
-
/** @description The hierarchy is unchanged since the supplied `ETag`. No body; keep using the cached
|
|
9503
|
+
/** @description The hierarchy is unchanged since the supplied `ETag`. No body; keep using the cached copy. */
|
|
9474
9504
|
304: {
|
|
9475
9505
|
headers: {
|
|
9476
9506
|
[name: string]: unknown;
|
|
9477
9507
|
};
|
|
9478
9508
|
content?: never;
|
|
9479
9509
|
};
|
|
9480
|
-
/** @description The request sent both an `X-API-Key` and an `Authorization` header
|
|
9510
|
+
/** @description The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range; or the request sent both an `X-API-Key` and an `Authorization` header */
|
|
9481
9511
|
400: {
|
|
9482
9512
|
headers: {
|
|
9483
9513
|
[name: string]: unknown;
|
|
@@ -9488,7 +9518,7 @@ interface operations {
|
|
|
9488
9518
|
* "error": {
|
|
9489
9519
|
* "statusCode": 400,
|
|
9490
9520
|
* "code": null,
|
|
9491
|
-
* "message": "The request sent both an `X-API-Key` and an `Authorization` header
|
|
9521
|
+
* "message": "The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range; or the request sent both an `X-API-Key` and an `Authorization` header",
|
|
9492
9522
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
9493
9523
|
* "path": "/api/v1/nodes/parents",
|
|
9494
9524
|
* "method": "GET"
|
|
@@ -9577,7 +9607,7 @@ interface operations {
|
|
|
9577
9607
|
* "code": null,
|
|
9578
9608
|
* "message": "The request sent both an `X-API-Key` and an `Authorization` header; send one",
|
|
9579
9609
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
9580
|
-
* "path": "/api/v1/nodes",
|
|
9610
|
+
* "path": "/api/v1/nodes/{id}",
|
|
9581
9611
|
* "method": "GET"
|
|
9582
9612
|
* }
|
|
9583
9613
|
* }
|
|
@@ -9918,7 +9948,18 @@ interface operations {
|
|
|
9918
9948
|
};
|
|
9919
9949
|
ApiNodesController_getSubtree: {
|
|
9920
9950
|
parameters: {
|
|
9921
|
-
query?:
|
|
9951
|
+
query?: {
|
|
9952
|
+
/** @description Page number (1-based) */
|
|
9953
|
+
page?: number;
|
|
9954
|
+
/** @description Items per page (1-100, default 20) */
|
|
9955
|
+
take?: number;
|
|
9956
|
+
/** @description Search node names and slugs */
|
|
9957
|
+
q?: string;
|
|
9958
|
+
/** @description Sort column. Defaults to `created`, oldest first. */
|
|
9959
|
+
sort_by?: "name" | "created";
|
|
9960
|
+
/** @description Sort direction */
|
|
9961
|
+
order?: "asc" | "desc";
|
|
9962
|
+
};
|
|
9922
9963
|
header?: never;
|
|
9923
9964
|
path: {
|
|
9924
9965
|
id: string;
|
|
@@ -9927,18 +9968,19 @@ interface operations {
|
|
|
9927
9968
|
};
|
|
9928
9969
|
requestBody?: never;
|
|
9929
9970
|
responses: {
|
|
9930
|
-
/** @description
|
|
9971
|
+
/** @description One page of the node and its descendants in scope */
|
|
9931
9972
|
200: {
|
|
9932
9973
|
headers: {
|
|
9933
9974
|
[name: string]: unknown;
|
|
9934
9975
|
};
|
|
9935
9976
|
content: {
|
|
9936
9977
|
"application/json": {
|
|
9937
|
-
|
|
9978
|
+
items: components["schemas"]["ScopedNodeResponseDto"][];
|
|
9979
|
+
pagination: components["schemas"]["PageMetaDto"];
|
|
9938
9980
|
};
|
|
9939
9981
|
};
|
|
9940
9982
|
};
|
|
9941
|
-
/** @description The request sent both an `X-API-Key` and an `Authorization` header
|
|
9983
|
+
/** @description The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range; or the request sent both an `X-API-Key` and an `Authorization` header */
|
|
9942
9984
|
400: {
|
|
9943
9985
|
headers: {
|
|
9944
9986
|
[name: string]: unknown;
|
|
@@ -9949,9 +9991,9 @@ interface operations {
|
|
|
9949
9991
|
* "error": {
|
|
9950
9992
|
* "statusCode": 400,
|
|
9951
9993
|
* "code": null,
|
|
9952
|
-
* "message": "The request sent both an `X-API-Key` and an `Authorization` header
|
|
9994
|
+
* "message": "The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range; or the request sent both an `X-API-Key` and an `Authorization` header",
|
|
9953
9995
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
9954
|
-
* "path": "/api/v1/nodes",
|
|
9996
|
+
* "path": "/api/v1/nodes/{id}/tree",
|
|
9955
9997
|
* "method": "GET"
|
|
9956
9998
|
* }
|
|
9957
9999
|
* }
|
|
@@ -10038,7 +10080,7 @@ interface operations {
|
|
|
10038
10080
|
* "code": null,
|
|
10039
10081
|
* "message": "The request sent both an `X-API-Key` and an `Authorization` header; send one",
|
|
10040
10082
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
10041
|
-
* "path": "/api/v1/nodes",
|
|
10083
|
+
* "path": "/api/v1/nodes/{id}",
|
|
10042
10084
|
* "method": "GET"
|
|
10043
10085
|
* }
|
|
10044
10086
|
* }
|
|
@@ -10092,7 +10134,18 @@ interface operations {
|
|
|
10092
10134
|
};
|
|
10093
10135
|
ApiNodesController_getChildren: {
|
|
10094
10136
|
parameters: {
|
|
10095
|
-
query?:
|
|
10137
|
+
query?: {
|
|
10138
|
+
/** @description Page number (1-based) */
|
|
10139
|
+
page?: number;
|
|
10140
|
+
/** @description Items per page (1-100, default 20) */
|
|
10141
|
+
take?: number;
|
|
10142
|
+
/** @description Search node names and slugs */
|
|
10143
|
+
q?: string;
|
|
10144
|
+
/** @description Sort column. Defaults to `created`, oldest first. */
|
|
10145
|
+
sort_by?: "name" | "created";
|
|
10146
|
+
/** @description Sort direction */
|
|
10147
|
+
order?: "asc" | "desc";
|
|
10148
|
+
};
|
|
10096
10149
|
header?: never;
|
|
10097
10150
|
path: {
|
|
10098
10151
|
id: string;
|
|
@@ -10101,7 +10154,7 @@ interface operations {
|
|
|
10101
10154
|
};
|
|
10102
10155
|
requestBody?: never;
|
|
10103
10156
|
responses: {
|
|
10104
|
-
/** @description
|
|
10157
|
+
/** @description One page of the node's children */
|
|
10105
10158
|
200: {
|
|
10106
10159
|
headers: {
|
|
10107
10160
|
[name: string]: unknown;
|
|
@@ -10109,10 +10162,11 @@ interface operations {
|
|
|
10109
10162
|
content: {
|
|
10110
10163
|
"application/json": {
|
|
10111
10164
|
items: components["schemas"]["NodeResponseDto"][];
|
|
10165
|
+
pagination: components["schemas"]["PageMetaDto"];
|
|
10112
10166
|
};
|
|
10113
10167
|
};
|
|
10114
10168
|
};
|
|
10115
|
-
/** @description The request sent both an `X-API-Key` and an `Authorization` header
|
|
10169
|
+
/** @description The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range; or the request sent both an `X-API-Key` and an `Authorization` header */
|
|
10116
10170
|
400: {
|
|
10117
10171
|
headers: {
|
|
10118
10172
|
[name: string]: unknown;
|
|
@@ -10123,9 +10177,9 @@ interface operations {
|
|
|
10123
10177
|
* "error": {
|
|
10124
10178
|
* "statusCode": 400,
|
|
10125
10179
|
* "code": null,
|
|
10126
|
-
* "message": "The request sent both an `X-API-Key` and an `Authorization` header
|
|
10180
|
+
* "message": "The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range; or the request sent both an `X-API-Key` and an `Authorization` header",
|
|
10127
10181
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
10128
|
-
* "path": "/api/v1/nodes",
|
|
10182
|
+
* "path": "/api/v1/nodes/{id}/children",
|
|
10129
10183
|
* "method": "GET"
|
|
10130
10184
|
* }
|
|
10131
10185
|
* }
|
|
@@ -10557,10 +10611,10 @@ interface operations {
|
|
|
10557
10611
|
page?: number;
|
|
10558
10612
|
/** @description Items per page (1-100, default 20) */
|
|
10559
10613
|
take?: number;
|
|
10560
|
-
/** @description Search
|
|
10614
|
+
/** @description Search organization names and slugs */
|
|
10561
10615
|
q?: string;
|
|
10562
|
-
/** @description
|
|
10563
|
-
sort_by?:
|
|
10616
|
+
/** @description Sort column. Defaults to `name`, A to Z. */
|
|
10617
|
+
sort_by?: "name" | "created";
|
|
10564
10618
|
/** @description Sort direction */
|
|
10565
10619
|
order?: "asc" | "desc";
|
|
10566
10620
|
/** @description Exact match on the organization's `external_id` (your own id for it). Answers one organization or none. */
|
|
@@ -12634,10 +12688,10 @@ interface operations {
|
|
|
12634
12688
|
page?: number;
|
|
12635
12689
|
/** @description Items per page (1-100, default 20) */
|
|
12636
12690
|
take?: number;
|
|
12637
|
-
/** @description Search
|
|
12691
|
+
/** @description Search member names and emails */
|
|
12638
12692
|
q?: string;
|
|
12639
|
-
/** @description
|
|
12640
|
-
sort_by?:
|
|
12693
|
+
/** @description Sort column. Defaults to `created`, oldest membership first. */
|
|
12694
|
+
sort_by?: "name" | "email" | "role" | "created";
|
|
12641
12695
|
/** @description Sort direction */
|
|
12642
12696
|
order?: "asc" | "desc";
|
|
12643
12697
|
/** @description Only members holding this role */
|
|
@@ -12819,7 +12873,7 @@ interface operations {
|
|
|
12819
12873
|
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
12820
12874
|
};
|
|
12821
12875
|
};
|
|
12822
|
-
/** @description
|
|
12876
|
+
/** @description The caller is an organization administrator signed in as an identity and holds no `rbac.manage_assignments` at the organization; an organization administrator adds people by invitation (`organization.member_add_requires_invite`). Also a caller without the permissions the route needs */
|
|
12823
12877
|
403: {
|
|
12824
12878
|
headers: {
|
|
12825
12879
|
[name: string]: unknown;
|
|
@@ -12830,10 +12884,10 @@ interface operations {
|
|
|
12830
12884
|
* "error": {
|
|
12831
12885
|
* "statusCode": 403,
|
|
12832
12886
|
* "code": null,
|
|
12833
|
-
* "message": "
|
|
12887
|
+
* "message": "The caller is an organization administrator signed in as an identity and holds no `rbac.manage_assignments` at the organization; an organization administrator adds people by invitation (`organization.member_add_requires_invite`). Also a caller without the permissions the route needs",
|
|
12834
12888
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
12835
|
-
* "path": "/api/v1/organizations",
|
|
12836
|
-
* "method": "
|
|
12889
|
+
* "path": "/api/v1/organizations/{id}/members",
|
|
12890
|
+
* "method": "POST"
|
|
12837
12891
|
* }
|
|
12838
12892
|
* }
|
|
12839
12893
|
*/
|
|
@@ -13156,7 +13210,7 @@ interface operations {
|
|
|
13156
13210
|
};
|
|
13157
13211
|
requestBody?: never;
|
|
13158
13212
|
responses: {
|
|
13159
|
-
/** @description Factors
|
|
13213
|
+
/** @description Factors and recovery codes cleared, and the devices trusted in this Environment; the member enrols again at their next sign-in */
|
|
13160
13214
|
204: {
|
|
13161
13215
|
headers: {
|
|
13162
13216
|
[name: string]: unknown;
|
|
@@ -13247,7 +13301,7 @@ interface operations {
|
|
|
13247
13301
|
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
13248
13302
|
};
|
|
13249
13303
|
};
|
|
13250
|
-
/** @description The caller is an organization administrator and the member also belongs to another organization in the
|
|
13304
|
+
/** @description The caller is an organization administrator and the member also belongs to another organization, or holds an active membership in another Environment of the Account; the second factor is held once per identity, so only the application's administrators may reset it (`organization.member_mfa_shared`) */
|
|
13251
13305
|
409: {
|
|
13252
13306
|
headers: {
|
|
13253
13307
|
[name: string]: unknown;
|
|
@@ -13258,7 +13312,7 @@ interface operations {
|
|
|
13258
13312
|
* "error": {
|
|
13259
13313
|
* "statusCode": 409,
|
|
13260
13314
|
* "code": null,
|
|
13261
|
-
* "message": "The caller is an organization administrator and the member also belongs to another organization in the
|
|
13315
|
+
* "message": "The caller is an organization administrator and the member also belongs to another organization, or holds an active membership in another Environment of the Account; the second factor is held once per identity, so only the application's administrators may reset it (`organization.member_mfa_shared`)",
|
|
13262
13316
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
13263
13317
|
* "path": "/api/v1/organizations/{id}/members/{identityId}/mfa/reset",
|
|
13264
13318
|
* "method": "POST"
|
|
@@ -13279,11 +13333,11 @@ interface operations {
|
|
|
13279
13333
|
take?: number;
|
|
13280
13334
|
/** @description Search term */
|
|
13281
13335
|
q?: string;
|
|
13282
|
-
/** @description Column to sort by.
|
|
13283
|
-
sort_by?:
|
|
13336
|
+
/** @description Column to sort by. Defaults to `created`, newest first. */
|
|
13337
|
+
sort_by?: "name" | "email" | "created";
|
|
13284
13338
|
/** @description Sort direction */
|
|
13285
13339
|
order?: "asc" | "desc";
|
|
13286
|
-
/** @description Filter by
|
|
13340
|
+
/** @description Filter by invite status */
|
|
13287
13341
|
status?: "pending" | "accepted" | "revoked" | "expired";
|
|
13288
13342
|
};
|
|
13289
13343
|
header?: never;
|
|
@@ -16145,7 +16199,18 @@ interface operations {
|
|
|
16145
16199
|
};
|
|
16146
16200
|
ApiOrganizationDirectoryGroupsController_list: {
|
|
16147
16201
|
parameters: {
|
|
16148
|
-
query?:
|
|
16202
|
+
query?: {
|
|
16203
|
+
/** @description Page number (1-based) */
|
|
16204
|
+
page?: number;
|
|
16205
|
+
/** @description Items per page (1-100, default 20) */
|
|
16206
|
+
take?: number;
|
|
16207
|
+
/** @description Search group display names and external ids */
|
|
16208
|
+
q?: string;
|
|
16209
|
+
/** @description Sort column. Defaults to `name`, A to Z. */
|
|
16210
|
+
sort_by?: "name" | "created";
|
|
16211
|
+
/** @description Sort direction */
|
|
16212
|
+
order?: "asc" | "desc";
|
|
16213
|
+
};
|
|
16149
16214
|
header?: never;
|
|
16150
16215
|
path: {
|
|
16151
16216
|
id: string;
|
|
@@ -16154,7 +16219,7 @@ interface operations {
|
|
|
16154
16219
|
};
|
|
16155
16220
|
requestBody?: never;
|
|
16156
16221
|
responses: {
|
|
16157
|
-
/** @description
|
|
16222
|
+
/** @description One page of pushed groups, each with its role mapping and member count, by display name unless sorted (`sort_by` `name` or `created`); `q` searches display names and external ids */
|
|
16158
16223
|
200: {
|
|
16159
16224
|
headers: {
|
|
16160
16225
|
[name: string]: unknown;
|
|
@@ -16162,6 +16227,7 @@ interface operations {
|
|
|
16162
16227
|
content: {
|
|
16163
16228
|
"application/json": {
|
|
16164
16229
|
items: components["schemas"]["ScimGroupResponseDto"][];
|
|
16230
|
+
pagination: components["schemas"]["PageMetaDto"];
|
|
16165
16231
|
};
|
|
16166
16232
|
};
|
|
16167
16233
|
};
|
|
@@ -17584,7 +17650,7 @@ interface operations {
|
|
|
17584
17650
|
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
17585
17651
|
};
|
|
17586
17652
|
};
|
|
17587
|
-
/** @description The identity already has this role at this node, or the node
|
|
17653
|
+
/** @description The identity already has this role at this node, already holds its one role at this organization, or the node sits beneath an organization the identity has no membership in effect at */
|
|
17588
17654
|
409: {
|
|
17589
17655
|
headers: {
|
|
17590
17656
|
[name: string]: unknown;
|
|
@@ -17595,7 +17661,7 @@ interface operations {
|
|
|
17595
17661
|
* "error": {
|
|
17596
17662
|
* "statusCode": 409,
|
|
17597
17663
|
* "code": null,
|
|
17598
|
-
* "message": "The identity already has this role at this node, or the node
|
|
17664
|
+
* "message": "The identity already has this role at this node, already holds its one role at this organization, or the node sits beneath an organization the identity has no membership in effect at",
|
|
17599
17665
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
17600
17666
|
* "path": "/api/v1/assignments",
|
|
17601
17667
|
* "method": "POST"
|
|
@@ -19307,10 +19373,10 @@ interface operations {
|
|
|
19307
19373
|
page?: number;
|
|
19308
19374
|
/** @description Items per page (1-100, default 20) */
|
|
19309
19375
|
take?: number;
|
|
19310
|
-
/** @description Search
|
|
19376
|
+
/** @description Search the endpoint URL */
|
|
19311
19377
|
q?: string;
|
|
19312
|
-
/** @description
|
|
19313
|
-
sort_by?:
|
|
19378
|
+
/** @description Sort column. Defaults to `created`, newest first. */
|
|
19379
|
+
sort_by?: "url" | "created";
|
|
19314
19380
|
/** @description Sort direction */
|
|
19315
19381
|
order?: "asc" | "desc";
|
|
19316
19382
|
};
|
|
@@ -19578,10 +19644,10 @@ interface operations {
|
|
|
19578
19644
|
page?: number;
|
|
19579
19645
|
/** @description Items per page (1-100, default 20) */
|
|
19580
19646
|
take?: number;
|
|
19581
|
-
/** @description Search
|
|
19647
|
+
/** @description Search the event type */
|
|
19582
19648
|
q?: string;
|
|
19583
|
-
/** @description
|
|
19584
|
-
sort_by?:
|
|
19649
|
+
/** @description Sort column. Defaults to `created`, newest first. */
|
|
19650
|
+
sort_by?: "created" | "event_type" | "status";
|
|
19585
19651
|
/** @description Sort direction */
|
|
19586
19652
|
order?: "asc" | "desc";
|
|
19587
19653
|
};
|
|
@@ -20022,10 +20088,10 @@ interface operations {
|
|
|
20022
20088
|
page?: number;
|
|
20023
20089
|
/** @description Items per page (1-100, default 20) */
|
|
20024
20090
|
take?: number;
|
|
20025
|
-
/** @description Search
|
|
20091
|
+
/** @description Search client names */
|
|
20026
20092
|
q?: string;
|
|
20027
|
-
/** @description
|
|
20028
|
-
sort_by?:
|
|
20093
|
+
/** @description Sort column. Defaults to `created`, newest first. */
|
|
20094
|
+
sort_by?: "name" | "created";
|
|
20029
20095
|
/** @description Sort direction */
|
|
20030
20096
|
order?: "asc" | "desc";
|
|
20031
20097
|
};
|
|
@@ -20136,7 +20202,7 @@ interface operations {
|
|
|
20136
20202
|
};
|
|
20137
20203
|
};
|
|
20138
20204
|
};
|
|
20139
|
-
/** @description The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range, `backchannel_logout_uri` names an address Canopy's servers will not call,
|
|
20205
|
+
/** @description The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range, `backchannel_logout_uri` names an address Canopy's servers will not call, `initiate_login_uri` is malformed or not `https` (loopback hosts excepted), or `scopes` names a scope Canopy does not issue (`oauth.client_scope_unknown`); or the request sent both an `X-API-Key` and an `Authorization` header */
|
|
20140
20206
|
400: {
|
|
20141
20207
|
headers: {
|
|
20142
20208
|
[name: string]: unknown;
|
|
@@ -20147,7 +20213,7 @@ interface operations {
|
|
|
20147
20213
|
* "error": {
|
|
20148
20214
|
* "statusCode": 400,
|
|
20149
20215
|
* "code": null,
|
|
20150
|
-
* "message": "The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range, `backchannel_logout_uri` names an address Canopy's servers will not call,
|
|
20216
|
+
* "message": "The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range, `backchannel_logout_uri` names an address Canopy's servers will not call, `initiate_login_uri` is malformed or not `https` (loopback hosts excepted), or `scopes` names a scope Canopy does not issue (`oauth.client_scope_unknown`); or the request sent both an `X-API-Key` and an `Authorization` header",
|
|
20151
20217
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
20152
20218
|
* "path": "/api/v1/oauth-clients",
|
|
20153
20219
|
* "method": "POST"
|
|
@@ -20547,7 +20613,7 @@ interface operations {
|
|
|
20547
20613
|
};
|
|
20548
20614
|
};
|
|
20549
20615
|
};
|
|
20550
|
-
/** @description The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range, `backchannel_logout_uri` names an address Canopy's servers will not call,
|
|
20616
|
+
/** @description The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range, `backchannel_logout_uri` names an address Canopy's servers will not call, `initiate_login_uri` is malformed or not `https` (loopback hosts excepted), or `scopes` names a scope Canopy does not issue (`oauth.client_scope_unknown`); or the request sent both an `X-API-Key` and an `Authorization` header */
|
|
20551
20617
|
400: {
|
|
20552
20618
|
headers: {
|
|
20553
20619
|
[name: string]: unknown;
|
|
@@ -20558,7 +20624,7 @@ interface operations {
|
|
|
20558
20624
|
* "error": {
|
|
20559
20625
|
* "statusCode": 400,
|
|
20560
20626
|
* "code": null,
|
|
20561
|
-
* "message": "The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range, `backchannel_logout_uri` names an address Canopy's servers will not call,
|
|
20627
|
+
* "message": "The request failed validation: a body field, a query parameter or an id in the path is missing, malformed or out of range, `backchannel_logout_uri` names an address Canopy's servers will not call, `initiate_login_uri` is malformed or not `https` (loopback hosts excepted), or `scopes` names a scope Canopy does not issue (`oauth.client_scope_unknown`); or the request sent both an `X-API-Key` and an `Authorization` header",
|
|
20562
20628
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
20563
20629
|
* "path": "/api/v1/oauth-clients/{id}",
|
|
20564
20630
|
* "method": "PATCH"
|
|
@@ -20748,10 +20814,10 @@ interface operations {
|
|
|
20748
20814
|
page?: number;
|
|
20749
20815
|
/** @description Items per page (1-100, default 20) */
|
|
20750
20816
|
take?: number;
|
|
20751
|
-
/** @description Search
|
|
20817
|
+
/** @description Search key names */
|
|
20752
20818
|
q?: string;
|
|
20753
|
-
/** @description
|
|
20754
|
-
sort_by?:
|
|
20819
|
+
/** @description Sort column. Defaults to `created`, newest first. */
|
|
20820
|
+
sort_by?: "name" | "created";
|
|
20755
20821
|
/** @description Sort direction */
|
|
20756
20822
|
order?: "asc" | "desc";
|
|
20757
20823
|
};
|
|
@@ -21050,7 +21116,7 @@ interface operations {
|
|
|
21050
21116
|
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
21051
21117
|
};
|
|
21052
21118
|
};
|
|
21053
|
-
/** @description The
|
|
21119
|
+
/** @description The caller lacks `api_key.manage` (a scoped API key without that scope, or an admin without the Account capability that covers it), or is a scoped API key acting on a key with more access than its own: a `full_access` key, or one holding a scope outside its own (`api_key.access_exceeds_caller`) */
|
|
21054
21120
|
403: {
|
|
21055
21121
|
headers: {
|
|
21056
21122
|
[name: string]: unknown;
|
|
@@ -21061,10 +21127,10 @@ interface operations {
|
|
|
21061
21127
|
* "error": {
|
|
21062
21128
|
* "statusCode": 403,
|
|
21063
21129
|
* "code": null,
|
|
21064
|
-
* "message": "The
|
|
21130
|
+
* "message": "The caller lacks `api_key.manage` (a scoped API key without that scope, or an admin without the Account capability that covers it), or is a scoped API key acting on a key with more access than its own: a `full_access` key, or one holding a scope outside its own (`api_key.access_exceeds_caller`)",
|
|
21065
21131
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
21066
|
-
* "path": "/api/v1/api-keys",
|
|
21067
|
-
* "method": "
|
|
21132
|
+
* "path": "/api/v1/api-keys/{id}",
|
|
21133
|
+
* "method": "DELETE"
|
|
21068
21134
|
* }
|
|
21069
21135
|
* }
|
|
21070
21136
|
*/
|
|
@@ -21162,7 +21228,7 @@ interface operations {
|
|
|
21162
21228
|
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
21163
21229
|
};
|
|
21164
21230
|
};
|
|
21165
|
-
/** @description The
|
|
21231
|
+
/** @description The caller lacks `api_key.manage` (a scoped API key without that scope, or an admin without the Account capability that covers it), or is a scoped API key acting on a key with more access than its own: a `full_access` key, or one holding a scope outside its own (`api_key.access_exceeds_caller`) */
|
|
21166
21232
|
403: {
|
|
21167
21233
|
headers: {
|
|
21168
21234
|
[name: string]: unknown;
|
|
@@ -21173,10 +21239,10 @@ interface operations {
|
|
|
21173
21239
|
* "error": {
|
|
21174
21240
|
* "statusCode": 403,
|
|
21175
21241
|
* "code": null,
|
|
21176
|
-
* "message": "The
|
|
21242
|
+
* "message": "The caller lacks `api_key.manage` (a scoped API key without that scope, or an admin without the Account capability that covers it), or is a scoped API key acting on a key with more access than its own: a `full_access` key, or one holding a scope outside its own (`api_key.access_exceeds_caller`)",
|
|
21177
21243
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
21178
|
-
* "path": "/api/v1/api-keys",
|
|
21179
|
-
* "method": "
|
|
21244
|
+
* "path": "/api/v1/api-keys/{id}",
|
|
21245
|
+
* "method": "PATCH"
|
|
21180
21246
|
* }
|
|
21181
21247
|
* }
|
|
21182
21248
|
*/
|
|
@@ -21270,7 +21336,7 @@ interface operations {
|
|
|
21270
21336
|
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
21271
21337
|
};
|
|
21272
21338
|
};
|
|
21273
|
-
/** @description The
|
|
21339
|
+
/** @description The caller lacks `api_key.manage` (a scoped API key without that scope, or an admin without the Account capability that covers it), or is a scoped API key acting on a key with more access than its own: a `full_access` key, or one holding a scope outside its own (`api_key.access_exceeds_caller`) */
|
|
21274
21340
|
403: {
|
|
21275
21341
|
headers: {
|
|
21276
21342
|
[name: string]: unknown;
|
|
@@ -21281,10 +21347,10 @@ interface operations {
|
|
|
21281
21347
|
* "error": {
|
|
21282
21348
|
* "statusCode": 403,
|
|
21283
21349
|
* "code": null,
|
|
21284
|
-
* "message": "The
|
|
21350
|
+
* "message": "The caller lacks `api_key.manage` (a scoped API key without that scope, or an admin without the Account capability that covers it), or is a scoped API key acting on a key with more access than its own: a `full_access` key, or one holding a scope outside its own (`api_key.access_exceeds_caller`)",
|
|
21285
21351
|
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
21286
|
-
* "path": "/api/v1/api-keys",
|
|
21287
|
-
* "method": "
|
|
21352
|
+
* "path": "/api/v1/api-keys/{id}/rotate-secret",
|
|
21353
|
+
* "method": "POST"
|
|
21288
21354
|
* }
|
|
21289
21355
|
* }
|
|
21290
21356
|
*/
|
|
@@ -21479,8 +21545,16 @@ declare class Identities {
|
|
|
21479
21545
|
* newest first: when and where it was signed in, when it expires, and the
|
|
21480
21546
|
* organization it is acting in. Read it back after a revoke to confirm,
|
|
21481
21547
|
* from your own side, that a sign-out took.
|
|
21548
|
+
*
|
|
21549
|
+
* Paginated (20 per page by default, `take` up to 100), so this returns a
|
|
21550
|
+
* `Paginator`: iterate it for every session, or call `.first()` for the
|
|
21551
|
+
* newest. The list takes `page` and `take` only; its order is fixed.
|
|
21552
|
+
*
|
|
21553
|
+
* ```ts
|
|
21554
|
+
* for await (const session of canopy.identities.sessions(id)) { … }
|
|
21555
|
+
* ```
|
|
21482
21556
|
*/
|
|
21483
|
-
sessions(id: string
|
|
21557
|
+
sessions(id: string, query?: QueryParams<"ApiIdentitiesController_listIdentitySessions">): Paginator<IdentitySessionItem>;
|
|
21484
21558
|
/**
|
|
21485
21559
|
* Ends one session and leaves the identity's others signed in. `sessionId`
|
|
21486
21560
|
* is the session's `id` from `sessions`: its current refresh token, which
|
|
@@ -21608,8 +21682,18 @@ declare class Organizations {
|
|
|
21608
21682
|
revokeDirectoryToken(id: string, tokenId: string): Promise<void>;
|
|
21609
21683
|
/** The organization's own provisioning events, newest first. */
|
|
21610
21684
|
listDirectoryActivity(id: string): Promise<ResponseBody<"ApiOrganizationDirectoryController_activity">>;
|
|
21611
|
-
/**
|
|
21612
|
-
|
|
21685
|
+
/**
|
|
21686
|
+
* The groups the provider has pushed, each with its role mapping.
|
|
21687
|
+
*
|
|
21688
|
+
* Paginated (20 per page by default, `take` up to 100), so this returns a
|
|
21689
|
+
* `Paginator`. Sorted by display name unless `sort_by: "created"`; `q`
|
|
21690
|
+
* searches display names and external ids.
|
|
21691
|
+
*
|
|
21692
|
+
* ```ts
|
|
21693
|
+
* for await (const group of canopy.organizations.listDirectoryGroups(id)) { … }
|
|
21694
|
+
* ```
|
|
21695
|
+
*/
|
|
21696
|
+
listDirectoryGroups(id: string, query?: QueryParams<"ApiOrganizationDirectoryGroupsController_list">): Paginator<OrganizationDirectoryGroupItem>;
|
|
21613
21697
|
/**
|
|
21614
21698
|
* Grant a listed role to every member of a pushed group, at the
|
|
21615
21699
|
* organization. A role not on the organization's list is refused with
|
|
@@ -21622,6 +21706,8 @@ declare class Organizations {
|
|
|
21622
21706
|
type OrganizationItem = ItemOf$2<ResponseBody<"ApiOrganizationsController_listOrganizations">>;
|
|
21623
21707
|
type OrganizationMemberItem = ItemOf$2<ResponseBody<"ApiOrganizationsController_listMembers">>;
|
|
21624
21708
|
type OrganizationInviteItem = ItemOf$2<ResponseBody<"ApiOrganizationsController_listInvites">>;
|
|
21709
|
+
/** One pushed group from an organization's directory. */
|
|
21710
|
+
type OrganizationDirectoryGroupItem = ItemOf$2<ResponseBody<"ApiOrganizationDirectoryGroupsController_list">>;
|
|
21625
21711
|
type ItemOf$2<T> = T extends {
|
|
21626
21712
|
items: (infer Item)[];
|
|
21627
21713
|
} ? Item : never;
|
|
@@ -21655,6 +21741,10 @@ declare class Permissions {
|
|
|
21655
21741
|
*
|
|
21656
21742
|
* Prefer this to a loop over `evaluate` when rendering a screen: the checks
|
|
21657
21743
|
* are answered together instead of paying request latency for each.
|
|
21744
|
+
*
|
|
21745
|
+
* One request carries between 1 and 100 checks. More is refused with a
|
|
21746
|
+
* `400` (`CanopyError`, `statusCode` 400) and nothing is evaluated, so split
|
|
21747
|
+
* a larger set into batches of 100.
|
|
21658
21748
|
*/
|
|
21659
21749
|
evaluateBulk(input: RequestBody<"ApiPermissionsController_evaluateBulk">, options?: CallOptions): Promise<ResponseBody<"ApiPermissionsController_evaluateBulk">>;
|
|
21660
21750
|
/**
|
|
@@ -21792,10 +21882,18 @@ interface LocalAuthorizationQuery {
|
|
|
21792
21882
|
node_id?: string;
|
|
21793
21883
|
}
|
|
21794
21884
|
interface LocalAuthorizerStats {
|
|
21795
|
-
/**
|
|
21885
|
+
/** Reads of an identity's grant roots, one per refresh however many pages it took. */
|
|
21796
21886
|
grantFetches: number;
|
|
21797
|
-
/**
|
|
21887
|
+
/** Page requests those reads made: at least one per read, one more per further 100 grants. */
|
|
21888
|
+
grantPages: number;
|
|
21889
|
+
/** Reads of the hierarchy, one per refresh, including revalidations. */
|
|
21798
21890
|
treeRequests: number;
|
|
21891
|
+
/**
|
|
21892
|
+
* Page requests those reads made: one for a revalidation the server answers
|
|
21893
|
+
* `304`, otherwise one per page of 100 nodes, plus the request that confirms
|
|
21894
|
+
* a walk of several pages was not torn by a change made during it.
|
|
21895
|
+
*/
|
|
21896
|
+
treePages: number;
|
|
21799
21897
|
/** Revalidations the server answered `304`, so no tree was transferred. */
|
|
21800
21898
|
treeNotModified: number;
|
|
21801
21899
|
}
|
|
@@ -21859,14 +21957,39 @@ declare class LocalAuthorizer {
|
|
|
21859
21957
|
/** Climb from `nodeId` and look for a grant root among its ancestors. */
|
|
21860
21958
|
private holdsAtNode;
|
|
21861
21959
|
private grantRootsFor;
|
|
21960
|
+
/**
|
|
21961
|
+
* Every page of the identity's grant roots, folded into permission → nodes.
|
|
21962
|
+
*
|
|
21963
|
+
* Each row is one permission at one node, so a permission granted at three
|
|
21964
|
+
* nodes arrives as three rows, possibly on different pages. Stopping after
|
|
21965
|
+
* the first page would under-report what the identity holds: a false deny,
|
|
21966
|
+
* the safe direction, but a wrong answer all the same.
|
|
21967
|
+
*/
|
|
21862
21968
|
private fetchGrantRoots;
|
|
21863
21969
|
private parents;
|
|
21864
21970
|
/**
|
|
21865
21971
|
* Revalidate rather than re-read. The hierarchy is the expensive half and
|
|
21866
21972
|
* the one that changes least, so the common case is a `304` and no transfer
|
|
21867
21973
|
* at all — the tree stays in memory and only its expiry moves.
|
|
21974
|
+
*
|
|
21975
|
+
* The edges come a page at a time, so only the first page is conditional:
|
|
21976
|
+
* its validator covers the whole hierarchy, and a `304` to it means no page
|
|
21977
|
+
* has changed. On a `200` the remaining pages are read plainly and the map
|
|
21978
|
+
* is rebuilt from every page.
|
|
21979
|
+
*
|
|
21980
|
+
* A walk over several pages is not one snapshot. A node added or removed
|
|
21981
|
+
* between two page reads shifts the rows under the offset, so a row can be
|
|
21982
|
+
* skipped, which would leave a node out of the map until the next refresh.
|
|
21983
|
+
* So the walk is confirmed by asking for the first page again with the
|
|
21984
|
+
* validator it came with: a `304` proves nothing changed while the pages
|
|
21985
|
+
* were read. A `200` is a fresh first page, and the walk starts again from
|
|
21986
|
+
* it, up to {@link MAX_TREE_WALKS} times.
|
|
21868
21987
|
*/
|
|
21869
21988
|
private fetchTree;
|
|
21989
|
+
private parentsFirstPage;
|
|
21990
|
+
/** The first page's edges followed by every later page's. */
|
|
21991
|
+
private parentsRemainingPages;
|
|
21992
|
+
private keepTree;
|
|
21870
21993
|
}
|
|
21871
21994
|
|
|
21872
21995
|
/**
|
|
@@ -22309,4 +22432,4 @@ type WebhookEventData<Name extends WebhookEventName> = WebhookEvent<Name>["data"
|
|
|
22309
22432
|
*/
|
|
22310
22433
|
declare function isWebhookEvent<Name extends WebhookEventName>(delivery: WebhookDelivery, name: Name): delivery is WebhookEvent<Name>;
|
|
22311
22434
|
|
|
22312
|
-
export { type AssignmentItem, Assignments, type CallOptions, Canopy, CanopyAuthorizerError, CanopyClient, type CanopyClientOptions, CanopyConnectionError, CanopyError, type CanopyErrorBody, type CanopyOrgContext, type CanopyTokenClaims, CanopyTokenError, type Collection, type ConcurrencyOptions, type ConditionalResult, type CursorPagination, type FailureStatus, Identities, type IdentityAssignmentItem, type IdentityItem, type IdentitySessionItem, type LocalAuthorizationQuery, LocalAuthorizer, type LocalAuthorizerOptions, type LocalAuthorizerStats, MAX_TTL_MS, type OffsetPagination, type OperationId, type OrganizationInviteItem, type OrganizationItem, type OrganizationMemberItem, Organizations, type PageFetcher, type PageParams, type PaginateOptions, type Pagination, Paginator, type PartialSuccess, type PermissionItem, Permissions, type QueryParams, type RequestBody, type RequestOptions, type ResponseBody, type RoleItem, Roles, type Schema, TokenVerifier, type TokenVerifierOptions, type WebhookDelivery, type WebhookEvent, type WebhookEventData, type WebhookEventName, authorizationErrorStatus, type components, isCanopyAuthorizerError, isCanopyConnectionError, isCanopyError, isCanopyTokenError, isCursorPagination, isWebhookEvent, type operations, orgContext, paginate, type paths, tokenErrorStatus, withConcurrency };
|
|
22435
|
+
export { type AssignmentItem, Assignments, type CallOptions, Canopy, CanopyAuthorizerError, CanopyClient, type CanopyClientOptions, CanopyConnectionError, CanopyError, type CanopyErrorBody, type CanopyOrgContext, type CanopyTokenClaims, CanopyTokenError, type Collection, type ConcurrencyOptions, type ConditionalResult, type CursorPagination, type FailureStatus, Identities, type IdentityAssignmentItem, type IdentityItem, type IdentitySessionItem, type LocalAuthorizationQuery, LocalAuthorizer, type LocalAuthorizerOptions, type LocalAuthorizerStats, MAX_TTL_MS, type OffsetPagination, type OperationId, type OrganizationDirectoryGroupItem, type OrganizationInviteItem, type OrganizationItem, type OrganizationMemberItem, Organizations, type PageFetcher, type PageParams, type PaginateOptions, type Pagination, Paginator, type PartialSuccess, type PermissionItem, Permissions, type QueryParams, type RequestBody, type RequestOptions, type ResponseBody, type RoleItem, Roles, type Schema, TokenVerifier, type TokenVerifierOptions, type WebhookDelivery, type WebhookEvent, type WebhookEventData, type WebhookEventName, authorizationErrorStatus, type components, isCanopyAuthorizerError, isCanopyConnectionError, isCanopyError, isCanopyTokenError, isCursorPagination, isWebhookEvent, type operations, orgContext, paginate, type paths, tokenErrorStatus, withConcurrency };
|