@canopy-io/node 0.5.0 → 0.6.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 +24 -0
- package/dist/index.cjs +11 -19
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +56 -296
- package/dist/index.d.ts +56 -296
- package/dist/index.js +11 -19
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -514,7 +514,7 @@ interface paths {
|
|
|
514
514
|
head?: never;
|
|
515
515
|
/**
|
|
516
516
|
* Update an identity
|
|
517
|
-
* @description Updates an identity's mutable profile fields (`first_name`, `last_name`, `
|
|
517
|
+
* @description Updates an identity's mutable profile fields (`first_name`, `last_name`, `metadata`) in the current Environment. `email` and `external_id` are immutable here — `external_id` is owned by the SSO/SCIM provisioning path and cannot be re-pointed through this endpoint. The account-wide `is_active` switch is not settable from an Environment; to cut off access here, remove the identity from the Environment. Returns the updated identity and writes an `identity.updated` audit row. Returns `404` when the identity has no membership in this Environment.
|
|
518
518
|
*/
|
|
519
519
|
patch: operations["ApiIdentitiesController_updateIdentity"];
|
|
520
520
|
trace?: never;
|
|
@@ -539,46 +539,6 @@ interface paths {
|
|
|
539
539
|
patch?: never;
|
|
540
540
|
trace?: never;
|
|
541
541
|
};
|
|
542
|
-
"/api/v1/identities/{id}/activate": {
|
|
543
|
-
parameters: {
|
|
544
|
-
query?: never;
|
|
545
|
-
header?: never;
|
|
546
|
-
path?: never;
|
|
547
|
-
cookie?: never;
|
|
548
|
-
};
|
|
549
|
-
get?: never;
|
|
550
|
-
put?: never;
|
|
551
|
-
/**
|
|
552
|
-
* Activate an identity
|
|
553
|
-
* @description Reactivates an identity by setting `is_active = true`, the account-wide switch, allowing it to authenticate again in every Environment it belongs to. Writes an `identity.status_set` audit row (the same event the Console's account route emits), delivered to the account's subscriptions and to those of every Environment the identity is a member of. Returns a `200` message envelope. Returns `404` when the identity has no membership in this Environment.
|
|
554
|
-
*/
|
|
555
|
-
post: operations["ApiIdentitiesController_activateIdentity"];
|
|
556
|
-
delete?: never;
|
|
557
|
-
options?: never;
|
|
558
|
-
head?: never;
|
|
559
|
-
patch?: never;
|
|
560
|
-
trace?: never;
|
|
561
|
-
};
|
|
562
|
-
"/api/v1/identities/{id}/deactivate": {
|
|
563
|
-
parameters: {
|
|
564
|
-
query?: never;
|
|
565
|
-
header?: never;
|
|
566
|
-
path?: never;
|
|
567
|
-
cookie?: never;
|
|
568
|
-
};
|
|
569
|
-
get?: never;
|
|
570
|
-
put?: never;
|
|
571
|
-
/**
|
|
572
|
-
* Deactivate an identity
|
|
573
|
-
* @description Deactivates an identity by setting `is_active = false`, the account-wide switch, blocking future sign-in in every Environment it belongs to. Writes an `identity.status_set` audit row (the same event the Console's account route emits), delivered to the account's subscriptions and to those of every Environment the identity is a member of. Returns a `200` message envelope. Returns `404` when the identity has no membership in this Environment.
|
|
574
|
-
*/
|
|
575
|
-
post: operations["ApiIdentitiesController_deactivateIdentity"];
|
|
576
|
-
delete?: never;
|
|
577
|
-
options?: never;
|
|
578
|
-
head?: never;
|
|
579
|
-
patch?: never;
|
|
580
|
-
trace?: never;
|
|
581
|
-
};
|
|
582
542
|
"/api/v1/identities/{id}/password": {
|
|
583
543
|
parameters: {
|
|
584
544
|
query?: never;
|
|
@@ -834,7 +794,7 @@ interface paths {
|
|
|
834
794
|
put?: never;
|
|
835
795
|
/**
|
|
836
796
|
* Create an invite
|
|
837
|
-
* @description Creates a single identity invite in the active Environment and returns it along with a tokenized `accept_url`. The effective intent is derived server-side from existing identity state — a net-new email becomes `activate`, an existing identity without active access becomes `add_to_app`, and `password_reset` is honored only for an existing identity. An optional `role_id` + `node_id` pair (both or neither) seeds an initial role assignment applied at acceptance. Invites expire after 7 days
|
|
797
|
+
* @description Creates a single identity invite in the active Environment and returns it along with a tokenized `accept_url`. The effective intent is derived server-side from existing identity state — a net-new email becomes `activate`, an existing identity without active access becomes `add_to_app`, and `password_reset` is honored only for an existing identity. An optional `role_id` + `node_id` pair (both or neither) seeds an initial role assignment applied at acceptance. Invites expire after 7 days, or 24 hours for `password_reset`; the email is sent unless `send_email: false`, in which case the caller delivers `accept_url` itself. A duplicate pending invite for the same recipient returns `409`.
|
|
838
798
|
*/
|
|
839
799
|
post: operations["ApiIdentityInvitesController_createInvite"];
|
|
840
800
|
delete?: never;
|
|
@@ -894,7 +854,7 @@ interface paths {
|
|
|
894
854
|
put?: never;
|
|
895
855
|
/**
|
|
896
856
|
* Resend an invite
|
|
897
|
-
* @description Resends the email for a `pending` invite in the active Environment, generating a fresh token, invalidating the previous one, and resetting the 7
|
|
857
|
+
* @description Resends the email for a `pending` invite in the active Environment, generating a fresh token, invalidating the previous one, and resetting the expiry (7 days, or 24 hours for `password_reset`). Returns the new tokenized `accept_url`. Subject to a 5-minute cooldown between resends. Returns `404` when the invite is not found and `400` when it is not in `pending` status or the cooldown has not elapsed.
|
|
898
858
|
*/
|
|
899
859
|
post: operations["ApiIdentityInvitesController_resendInvite"];
|
|
900
860
|
delete?: never;
|
|
@@ -1355,7 +1315,7 @@ interface paths {
|
|
|
1355
1315
|
post?: never;
|
|
1356
1316
|
/**
|
|
1357
1317
|
* Unbind an SSO connection from an organization
|
|
1358
|
-
* @description Removes the binding; logins through the connection fall back to the Environment's placement. Existing memberships are untouched. Returns `404` when the connection is not bound to this organization. Requires the `hierarchy.manage` permission at the organization and emits `organization.sso_connection.unbound`.
|
|
1318
|
+
* @description Removes the binding; logins through the connection fall back to the Environment's placement. Existing memberships are untouched. Returns `404` when the connection is not bound to this organization, and `409` (`organization.sso_connection_owned_cannot_unbind`) when the organization set the connection up itself: an owned connection stays with its organization, so disable or delete it instead. Requires the `hierarchy.manage` permission at the organization and emits `organization.sso_connection.unbound`.
|
|
1359
1319
|
*/
|
|
1360
1320
|
delete: operations["ApiOrganizationsController_unbindSsoConnection"];
|
|
1361
1321
|
options?: never;
|
|
@@ -1874,7 +1834,7 @@ interface paths {
|
|
|
1874
1834
|
head?: never;
|
|
1875
1835
|
/**
|
|
1876
1836
|
* Update a role
|
|
1877
|
-
* @description Updates a role's `name`, `description`, and/or `is_active` flag by `id`. A name that collides with another role in the Environment returns `409`, and a missing role returns `404`. Supports optimistic concurrency via the `If-Match` header carrying the role's current version (`409` on a version mismatch). Requires the `rbac.manage_roles` permission.
|
|
1837
|
+
* @description Updates a role's `name`, `description`, and/or `is_active` flag by `id`. Setting `is_active` to `false` hides the role from pickers, refuses new assignments to it, and withholds its permissions from every current holder until it is set back to `true`; the assignments themselves are kept. A name that collides with another role in the Environment returns `409`, and a missing role returns `404`. Supports optimistic concurrency via the `If-Match` header carrying the role's current version (`409` on a version mismatch). Requires the `rbac.manage_roles` permission.
|
|
1878
1838
|
*/
|
|
1879
1839
|
patch: operations["ApiRolesController_updateRole"];
|
|
1880
1840
|
trace?: never;
|
|
@@ -2430,6 +2390,7 @@ interface components {
|
|
|
2430
2390
|
scope_evaluated: "node" | "app_wide";
|
|
2431
2391
|
/** @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 is org-scoped, not node-scoped. */
|
|
2432
2392
|
effective_node_id?: string | null;
|
|
2393
|
+
/** @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. */
|
|
2433
2394
|
granting_roles: string[];
|
|
2434
2395
|
denial_reason?: string | null;
|
|
2435
2396
|
};
|
|
@@ -2464,7 +2425,7 @@ interface components {
|
|
|
2464
2425
|
assignment_id: string;
|
|
2465
2426
|
role_id: string;
|
|
2466
2427
|
role_name: string;
|
|
2467
|
-
/** @description Whether the assignment
|
|
2428
|
+
/** @description Whether the assignment counts right now: within its effective_from/effective_to window, and its role is active. An inactive role's assignments are kept but grant nothing. */
|
|
2468
2429
|
active: boolean;
|
|
2469
2430
|
effective_from?: string | null;
|
|
2470
2431
|
effective_to?: string | null;
|
|
@@ -2560,11 +2521,13 @@ interface components {
|
|
|
2560
2521
|
email: string;
|
|
2561
2522
|
first_name: string;
|
|
2562
2523
|
last_name: string;
|
|
2563
|
-
/** @description Initial password. 8-64 characters. No composition rules — NIST SP 800-63B aligned. A HaveIBeenPwned breach check runs server-side. The effective policy is published on `GET /v1/identity/auth/config`, so a client can state the rules before submit rather than after. Omit to create a passwordless identity (sign-in via SSO
|
|
2524
|
+
/** @description Initial password. 8-64 characters. No composition rules — NIST SP 800-63B aligned. A HaveIBeenPwned breach check runs server-side. The effective policy is published on `GET /v1/identity/auth/config`, so a client can state the rules before submit rather than after. Omit to create a passwordless identity (sign-in via SSO or a password reset). */
|
|
2564
2525
|
password?: string;
|
|
2565
2526
|
external_id?: string;
|
|
2566
2527
|
metadata?: Record<string, unknown>;
|
|
2528
|
+
/** @description Role for an initial assignment — required if node_id is provided */
|
|
2567
2529
|
role_id?: string;
|
|
2530
|
+
/** @description Node for an initial assignment — required if role_id is provided */
|
|
2568
2531
|
node_id?: string;
|
|
2569
2532
|
};
|
|
2570
2533
|
BulkCreateIdentitiesDto: {
|
|
@@ -2588,13 +2551,9 @@ interface components {
|
|
|
2588
2551
|
/** Format: date-time */
|
|
2589
2552
|
updated_at: string;
|
|
2590
2553
|
};
|
|
2591
|
-
MessageResponseDto: {
|
|
2592
|
-
message: string;
|
|
2593
|
-
};
|
|
2594
2554
|
UpdateIdentityDto: {
|
|
2595
2555
|
first_name?: string;
|
|
2596
2556
|
last_name?: string;
|
|
2597
|
-
is_active?: boolean;
|
|
2598
2557
|
metadata?: Record<string, unknown> | null;
|
|
2599
2558
|
};
|
|
2600
2559
|
SetIdentityPasswordDto: {
|
|
@@ -2653,7 +2612,7 @@ interface components {
|
|
|
2653
2612
|
email_verified: boolean;
|
|
2654
2613
|
/** Format: date-time */
|
|
2655
2614
|
email_verified_at?: string | null;
|
|
2656
|
-
/** @description Whether the identity has a usable password. False for passwordless (SSO
|
|
2615
|
+
/** @description Whether the identity has a usable password. False for passwordless (SSO or email-code-only) identities. */
|
|
2657
2616
|
password_set: boolean;
|
|
2658
2617
|
/** @description True while the identity is in an active failed-login lockout window. */
|
|
2659
2618
|
locked: boolean;
|
|
@@ -2706,10 +2665,6 @@ interface components {
|
|
|
2706
2665
|
name: string;
|
|
2707
2666
|
role_id?: string | null;
|
|
2708
2667
|
node_id?: string | null;
|
|
2709
|
-
/** @description Environment the invite targets, or null for a directory-only (account-tier) invite created with the Environment field left empty. */
|
|
2710
|
-
environment_id?: string | null;
|
|
2711
|
-
/** @description Display name of the target Environment, or null for a directory-only invite. */
|
|
2712
|
-
environment_name?: string | null;
|
|
2713
2668
|
has_initial_assignment: boolean;
|
|
2714
2669
|
/** @enum {string} */
|
|
2715
2670
|
status: "pending" | "accepted" | "revoked" | "expired";
|
|
@@ -2741,10 +2696,6 @@ interface components {
|
|
|
2741
2696
|
name: string;
|
|
2742
2697
|
role_id?: string | null;
|
|
2743
2698
|
node_id?: string | null;
|
|
2744
|
-
/** @description Environment the invite targets, or null for a directory-only (account-tier) invite created with the Environment field left empty. */
|
|
2745
|
-
environment_id?: string | null;
|
|
2746
|
-
/** @description Display name of the target Environment, or null for a directory-only invite. */
|
|
2747
|
-
environment_name?: string | null;
|
|
2748
2699
|
has_initial_assignment: boolean;
|
|
2749
2700
|
/** @enum {string} */
|
|
2750
2701
|
status: "pending" | "accepted" | "revoked" | "expired";
|
|
@@ -3106,6 +3057,8 @@ interface components {
|
|
|
3106
3057
|
/** @enum {string} */
|
|
3107
3058
|
type: "saml" | "oidc";
|
|
3108
3059
|
status: string;
|
|
3060
|
+
/** @description The organization that set the connection up from the organization portal, or null. A connection owned by this organization cannot be unbound from it. */
|
|
3061
|
+
owner_organization_node_id?: string | null;
|
|
3109
3062
|
};
|
|
3110
3063
|
OrganizationSsoRoleSummaryDto: {
|
|
3111
3064
|
id: string;
|
|
@@ -3228,7 +3181,11 @@ interface components {
|
|
|
3228
3181
|
type: "saml" | "oidc";
|
|
3229
3182
|
name: string;
|
|
3230
3183
|
/** @enum {string} */
|
|
3231
|
-
status: "configuring" | "active" | "disabled"
|
|
3184
|
+
status: "configuring" | "active" | "disabled";
|
|
3185
|
+
/** @description The organization that owns the connection, when its administrator set it up from the organization portal; null for a connection the developer created. An owned connection cannot be moved to another organization or Environment, and its administrators are emailed when the developer changes its provider settings, disables or deletes it. */
|
|
3186
|
+
owner_organization_node_id?: string | null;
|
|
3187
|
+
/** @description True when an organization's administrator set the connection up from the organization portal. */
|
|
3188
|
+
owned_by_organization: boolean;
|
|
3232
3189
|
/** @description The HTTPS address the identity provider's SAML metadata was last imported from. `null` when the metadata was pasted as a document or never imported. */
|
|
3233
3190
|
saml_metadata_url?: string | null;
|
|
3234
3191
|
/** @description The last test sign-in run against the connection. Cleared when its provider settings change, since a test no longer proves them. */
|
|
@@ -3253,11 +3210,6 @@ interface components {
|
|
|
3253
3210
|
/** Format: date-time */
|
|
3254
3211
|
last_login_at?: string | null;
|
|
3255
3212
|
/** Format: date-time */
|
|
3256
|
-
last_login_failure_at?: string | null;
|
|
3257
|
-
consecutive_failures: number;
|
|
3258
|
-
/** Format: date-time */
|
|
3259
|
-
auto_disabled_at?: string | null;
|
|
3260
|
-
/** Format: date-time */
|
|
3261
3213
|
created_at: string;
|
|
3262
3214
|
/** Format: date-time */
|
|
3263
3215
|
updated_at: string;
|
|
@@ -3491,9 +3443,12 @@ interface components {
|
|
|
3491
3443
|
name?: string;
|
|
3492
3444
|
/** @description Updated role description */
|
|
3493
3445
|
description?: string | null;
|
|
3494
|
-
/** @description Whether the role is active */
|
|
3446
|
+
/** @description Whether the role is active. An inactive role is hidden from pickers, cannot be newly assigned, and grants nothing to its current holders until it is reactivated; their assignments are kept. */
|
|
3495
3447
|
is_active?: boolean;
|
|
3496
3448
|
};
|
|
3449
|
+
MessageResponseDto: {
|
|
3450
|
+
message: string;
|
|
3451
|
+
};
|
|
3497
3452
|
SetRolePermissionsDto: {
|
|
3498
3453
|
permission_keys: string[];
|
|
3499
3454
|
};
|
|
@@ -3736,7 +3691,7 @@ interface components {
|
|
|
3736
3691
|
/** @description Allowed node types (e.g. ['region', 'district', 'team']). Order is informational, not structural — parent/child rules are governed by `allowed_children`. Names starting with `canopy:` are reserved; with organizations enabled the list starts with `canopy:organization`. */
|
|
3737
3692
|
node_types: string[];
|
|
3738
3693
|
/**
|
|
3739
|
-
* @description Map from node type to allowed child node types.
|
|
3694
|
+
* @description Map from node type to allowed child node types. An empty array makes that type a leaf: nothing may be created or moved beneath it. A type the map does not mention accepts any child.
|
|
3740
3695
|
* @example {
|
|
3741
3696
|
* "region": [
|
|
3742
3697
|
* "district"
|
|
@@ -7121,222 +7076,6 @@ interface operations {
|
|
|
7121
7076
|
};
|
|
7122
7077
|
};
|
|
7123
7078
|
};
|
|
7124
|
-
ApiIdentitiesController_activateIdentity: {
|
|
7125
|
-
parameters: {
|
|
7126
|
-
query?: never;
|
|
7127
|
-
header?: never;
|
|
7128
|
-
path: {
|
|
7129
|
-
id: string;
|
|
7130
|
-
};
|
|
7131
|
-
cookie?: never;
|
|
7132
|
-
};
|
|
7133
|
-
requestBody?: never;
|
|
7134
|
-
responses: {
|
|
7135
|
-
/** @description Identity activated */
|
|
7136
|
-
200: {
|
|
7137
|
-
headers: {
|
|
7138
|
-
[name: string]: unknown;
|
|
7139
|
-
};
|
|
7140
|
-
content: {
|
|
7141
|
-
"application/json": {
|
|
7142
|
-
data: components["schemas"]["MessageResponseDto"];
|
|
7143
|
-
};
|
|
7144
|
-
};
|
|
7145
|
-
};
|
|
7146
|
-
/** @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 */
|
|
7147
|
-
400: {
|
|
7148
|
-
headers: {
|
|
7149
|
-
[name: string]: unknown;
|
|
7150
|
-
};
|
|
7151
|
-
content: {
|
|
7152
|
-
/**
|
|
7153
|
-
* @example {
|
|
7154
|
-
* "error": {
|
|
7155
|
-
* "statusCode": 400,
|
|
7156
|
-
* "code": null,
|
|
7157
|
-
* "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",
|
|
7158
|
-
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
7159
|
-
* "path": "/api/v1/identities/{id}/activate",
|
|
7160
|
-
* "method": "POST"
|
|
7161
|
-
* }
|
|
7162
|
-
* }
|
|
7163
|
-
*/
|
|
7164
|
-
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
7165
|
-
};
|
|
7166
|
-
};
|
|
7167
|
-
/** @description Invalid or expired token */
|
|
7168
|
-
401: {
|
|
7169
|
-
headers: {
|
|
7170
|
-
[name: string]: unknown;
|
|
7171
|
-
};
|
|
7172
|
-
content: {
|
|
7173
|
-
/**
|
|
7174
|
-
* @example {
|
|
7175
|
-
* "error": {
|
|
7176
|
-
* "statusCode": 401,
|
|
7177
|
-
* "code": null,
|
|
7178
|
-
* "message": "Invalid or expired token",
|
|
7179
|
-
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
7180
|
-
* "path": "/api/v1/identities",
|
|
7181
|
-
* "method": "GET"
|
|
7182
|
-
* }
|
|
7183
|
-
* }
|
|
7184
|
-
*/
|
|
7185
|
-
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
7186
|
-
};
|
|
7187
|
-
};
|
|
7188
|
-
/** @description This token is not authorized for this endpoint (wrong principal type — e.g., admin token on identity-only endpoint, or vice versa) */
|
|
7189
|
-
403: {
|
|
7190
|
-
headers: {
|
|
7191
|
-
[name: string]: unknown;
|
|
7192
|
-
};
|
|
7193
|
-
content: {
|
|
7194
|
-
/**
|
|
7195
|
-
* @example {
|
|
7196
|
-
* "error": {
|
|
7197
|
-
* "statusCode": 403,
|
|
7198
|
-
* "code": null,
|
|
7199
|
-
* "message": "This token is not authorized for this endpoint (wrong principal type — e.g., admin token on identity-only endpoint, or vice versa)",
|
|
7200
|
-
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
7201
|
-
* "path": "/api/v1/identities",
|
|
7202
|
-
* "method": "GET"
|
|
7203
|
-
* }
|
|
7204
|
-
* }
|
|
7205
|
-
*/
|
|
7206
|
-
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
7207
|
-
};
|
|
7208
|
-
};
|
|
7209
|
-
/** @description Identity not found */
|
|
7210
|
-
404: {
|
|
7211
|
-
headers: {
|
|
7212
|
-
[name: string]: unknown;
|
|
7213
|
-
};
|
|
7214
|
-
content: {
|
|
7215
|
-
/**
|
|
7216
|
-
* @example {
|
|
7217
|
-
* "error": {
|
|
7218
|
-
* "statusCode": 404,
|
|
7219
|
-
* "code": null,
|
|
7220
|
-
* "message": "Identity not found",
|
|
7221
|
-
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
7222
|
-
* "path": "/api/v1/identities/{id}/activate",
|
|
7223
|
-
* "method": "POST"
|
|
7224
|
-
* }
|
|
7225
|
-
* }
|
|
7226
|
-
*/
|
|
7227
|
-
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
7228
|
-
};
|
|
7229
|
-
};
|
|
7230
|
-
};
|
|
7231
|
-
};
|
|
7232
|
-
ApiIdentitiesController_deactivateIdentity: {
|
|
7233
|
-
parameters: {
|
|
7234
|
-
query?: never;
|
|
7235
|
-
header?: never;
|
|
7236
|
-
path: {
|
|
7237
|
-
id: string;
|
|
7238
|
-
};
|
|
7239
|
-
cookie?: never;
|
|
7240
|
-
};
|
|
7241
|
-
requestBody?: never;
|
|
7242
|
-
responses: {
|
|
7243
|
-
/** @description Identity deactivated */
|
|
7244
|
-
200: {
|
|
7245
|
-
headers: {
|
|
7246
|
-
[name: string]: unknown;
|
|
7247
|
-
};
|
|
7248
|
-
content: {
|
|
7249
|
-
"application/json": {
|
|
7250
|
-
data: components["schemas"]["MessageResponseDto"];
|
|
7251
|
-
};
|
|
7252
|
-
};
|
|
7253
|
-
};
|
|
7254
|
-
/** @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 */
|
|
7255
|
-
400: {
|
|
7256
|
-
headers: {
|
|
7257
|
-
[name: string]: unknown;
|
|
7258
|
-
};
|
|
7259
|
-
content: {
|
|
7260
|
-
/**
|
|
7261
|
-
* @example {
|
|
7262
|
-
* "error": {
|
|
7263
|
-
* "statusCode": 400,
|
|
7264
|
-
* "code": null,
|
|
7265
|
-
* "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",
|
|
7266
|
-
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
7267
|
-
* "path": "/api/v1/identities/{id}/deactivate",
|
|
7268
|
-
* "method": "POST"
|
|
7269
|
-
* }
|
|
7270
|
-
* }
|
|
7271
|
-
*/
|
|
7272
|
-
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
7273
|
-
};
|
|
7274
|
-
};
|
|
7275
|
-
/** @description Invalid or expired token */
|
|
7276
|
-
401: {
|
|
7277
|
-
headers: {
|
|
7278
|
-
[name: string]: unknown;
|
|
7279
|
-
};
|
|
7280
|
-
content: {
|
|
7281
|
-
/**
|
|
7282
|
-
* @example {
|
|
7283
|
-
* "error": {
|
|
7284
|
-
* "statusCode": 401,
|
|
7285
|
-
* "code": null,
|
|
7286
|
-
* "message": "Invalid or expired token",
|
|
7287
|
-
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
7288
|
-
* "path": "/api/v1/identities",
|
|
7289
|
-
* "method": "GET"
|
|
7290
|
-
* }
|
|
7291
|
-
* }
|
|
7292
|
-
*/
|
|
7293
|
-
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
7294
|
-
};
|
|
7295
|
-
};
|
|
7296
|
-
/** @description This token is not authorized for this endpoint (wrong principal type — e.g., admin token on identity-only endpoint, or vice versa) */
|
|
7297
|
-
403: {
|
|
7298
|
-
headers: {
|
|
7299
|
-
[name: string]: unknown;
|
|
7300
|
-
};
|
|
7301
|
-
content: {
|
|
7302
|
-
/**
|
|
7303
|
-
* @example {
|
|
7304
|
-
* "error": {
|
|
7305
|
-
* "statusCode": 403,
|
|
7306
|
-
* "code": null,
|
|
7307
|
-
* "message": "This token is not authorized for this endpoint (wrong principal type — e.g., admin token on identity-only endpoint, or vice versa)",
|
|
7308
|
-
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
7309
|
-
* "path": "/api/v1/identities",
|
|
7310
|
-
* "method": "GET"
|
|
7311
|
-
* }
|
|
7312
|
-
* }
|
|
7313
|
-
*/
|
|
7314
|
-
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
7315
|
-
};
|
|
7316
|
-
};
|
|
7317
|
-
/** @description Identity not found */
|
|
7318
|
-
404: {
|
|
7319
|
-
headers: {
|
|
7320
|
-
[name: string]: unknown;
|
|
7321
|
-
};
|
|
7322
|
-
content: {
|
|
7323
|
-
/**
|
|
7324
|
-
* @example {
|
|
7325
|
-
* "error": {
|
|
7326
|
-
* "statusCode": 404,
|
|
7327
|
-
* "code": null,
|
|
7328
|
-
* "message": "Identity not found",
|
|
7329
|
-
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
7330
|
-
* "path": "/api/v1/identities/{id}/deactivate",
|
|
7331
|
-
* "method": "POST"
|
|
7332
|
-
* }
|
|
7333
|
-
* }
|
|
7334
|
-
*/
|
|
7335
|
-
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
7336
|
-
};
|
|
7337
|
-
};
|
|
7338
|
-
};
|
|
7339
|
-
};
|
|
7340
7079
|
ApiIdentitiesController_setIdentityPassword: {
|
|
7341
7080
|
parameters: {
|
|
7342
7081
|
query?: never;
|
|
@@ -8635,14 +8374,12 @@ interface operations {
|
|
|
8635
8374
|
take?: number;
|
|
8636
8375
|
/** @description Search term */
|
|
8637
8376
|
q?: string;
|
|
8638
|
-
/** @description Column to sort by.
|
|
8639
|
-
sort_by?:
|
|
8377
|
+
/** @description Column to sort by. Defaults to `created`, newest first. */
|
|
8378
|
+
sort_by?: "name" | "email" | "created";
|
|
8640
8379
|
/** @description Sort direction */
|
|
8641
8380
|
order?: "asc" | "desc";
|
|
8642
8381
|
/** @description Filter by invite status */
|
|
8643
8382
|
status?: "pending" | "accepted" | "revoked" | "expired";
|
|
8644
|
-
/** @description Filter by target Environment. Pass the literal `none` to return only directory-only invites (environment_id is null). */
|
|
8645
|
-
environment_id?: string;
|
|
8646
8383
|
};
|
|
8647
8384
|
header?: never;
|
|
8648
8385
|
path?: never;
|
|
@@ -12641,6 +12378,27 @@ interface operations {
|
|
|
12641
12378
|
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
12642
12379
|
};
|
|
12643
12380
|
};
|
|
12381
|
+
/** @description The organization set this connection up itself; it stays bound. Disable or delete the connection instead. */
|
|
12382
|
+
409: {
|
|
12383
|
+
headers: {
|
|
12384
|
+
[name: string]: unknown;
|
|
12385
|
+
};
|
|
12386
|
+
content: {
|
|
12387
|
+
/**
|
|
12388
|
+
* @example {
|
|
12389
|
+
* "error": {
|
|
12390
|
+
* "statusCode": 409,
|
|
12391
|
+
* "code": null,
|
|
12392
|
+
* "message": "The organization set this connection up itself; it stays bound. Disable or delete the connection instead.",
|
|
12393
|
+
* "timestamp": "2026-04-20T12:00:00.000Z",
|
|
12394
|
+
* "path": "/api/v1/organizations/{id}/sso-connections/{connectionId}",
|
|
12395
|
+
* "method": "DELETE"
|
|
12396
|
+
* }
|
|
12397
|
+
* }
|
|
12398
|
+
*/
|
|
12399
|
+
"application/json": components["schemas"]["ErrorResponseDto"];
|
|
12400
|
+
};
|
|
12401
|
+
};
|
|
12644
12402
|
};
|
|
12645
12403
|
};
|
|
12646
12404
|
ApiOrganizationsController_listMembers: {
|
|
@@ -20694,14 +20452,14 @@ declare class Identities {
|
|
|
20694
20452
|
get(id: string): Promise<ResponseBody<"ApiIdentitiesController_getIdentity">>;
|
|
20695
20453
|
create(input: RequestBody<"ApiIdentitiesController_createIdentity">): Promise<ResponseBody<"ApiIdentitiesController_createIdentity">>;
|
|
20696
20454
|
update(id: string, input: RequestBody<"ApiIdentitiesController_updateIdentity">): Promise<ResponseBody<"ApiIdentitiesController_updateIdentity">>;
|
|
20697
|
-
delete(id: string): Promise<void>;
|
|
20698
20455
|
/**
|
|
20699
|
-
*
|
|
20700
|
-
*
|
|
20701
|
-
*
|
|
20456
|
+
* Takes the identity out of this key's Environment: its membership here is
|
|
20457
|
+
* deactivated and its role assignments here are dropped. The identity and
|
|
20458
|
+
* its access to other Environments are untouched. Deactivating an identity
|
|
20459
|
+
* everywhere is an Account-level action, not available to an
|
|
20460
|
+
* Environment-scoped key.
|
|
20702
20461
|
*/
|
|
20703
|
-
|
|
20704
|
-
activate(id: string): Promise<ResponseBody<"ApiIdentitiesController_activateIdentity">>;
|
|
20462
|
+
delete(id: string): Promise<void>;
|
|
20705
20463
|
/**
|
|
20706
20464
|
* Every role this identity holds, and where — across all pages.
|
|
20707
20465
|
*
|
|
@@ -20739,7 +20497,7 @@ declare class Identities {
|
|
|
20739
20497
|
* Ends every session the identity holds, so the next refresh on any device
|
|
20740
20498
|
* fails and the person signs in again. Access tokens already issued keep
|
|
20741
20499
|
* working until their short lifetime runs out. For a suspected compromise;
|
|
20742
|
-
* `
|
|
20500
|
+
* `delete` also takes the identity out of this Environment.
|
|
20743
20501
|
*/
|
|
20744
20502
|
revokeSessions(id: string): Promise<void>;
|
|
20745
20503
|
}
|
|
@@ -21082,7 +20840,9 @@ declare class LocalAuthorizer {
|
|
|
21082
20840
|
* With no argument, everything goes: grants and the hierarchy tree. Not
|
|
21083
20841
|
* needed in normal operation, where entries expire on their own; useful in
|
|
21084
20842
|
* tests and after a change whose reach you cannot name (a role's
|
|
21085
|
-
* permissions edited, a node moved).
|
|
20843
|
+
* permissions edited, a role deactivated or reactivated, a node moved). A
|
|
20844
|
+
* deactivated role grants nothing to anyone holding it, so until the cache
|
|
20845
|
+
* is cleared or expires, its holders keep being allowed locally.
|
|
21086
20846
|
*
|
|
21087
20847
|
* Multi-instance honesty: an invalidation reaches THIS process only. A
|
|
21088
20848
|
* webhook lands on one instance behind a load balancer; the others serve
|
package/dist/index.js
CHANGED
|
@@ -550,29 +550,19 @@ var Identities = class {
|
|
|
550
550
|
{ body: input }
|
|
551
551
|
);
|
|
552
552
|
}
|
|
553
|
+
/**
|
|
554
|
+
* Takes the identity out of this key's Environment: its membership here is
|
|
555
|
+
* deactivated and its role assignments here are dropped. The identity and
|
|
556
|
+
* its access to other Environments are untouched. Deactivating an identity
|
|
557
|
+
* everywhere is an Account-level action, not available to an
|
|
558
|
+
* Environment-scoped key.
|
|
559
|
+
*/
|
|
553
560
|
delete(id) {
|
|
554
561
|
return this.client.request(
|
|
555
562
|
"DELETE",
|
|
556
563
|
`/api/v1/identities/${encodeURIComponent(id)}`
|
|
557
564
|
);
|
|
558
565
|
}
|
|
559
|
-
/**
|
|
560
|
-
* Deactivation is the reversible counterpart to `delete` — sessions are
|
|
561
|
-
* revoked and sign-in refused, but the identity and its assignments survive.
|
|
562
|
-
* Prefer it for offboarding you may need to undo.
|
|
563
|
-
*/
|
|
564
|
-
deactivate(id) {
|
|
565
|
-
return this.client.request(
|
|
566
|
-
"POST",
|
|
567
|
-
`/api/v1/identities/${encodeURIComponent(id)}/deactivate`
|
|
568
|
-
);
|
|
569
|
-
}
|
|
570
|
-
activate(id) {
|
|
571
|
-
return this.client.request(
|
|
572
|
-
"POST",
|
|
573
|
-
`/api/v1/identities/${encodeURIComponent(id)}/activate`
|
|
574
|
-
);
|
|
575
|
-
}
|
|
576
566
|
/**
|
|
577
567
|
* Every role this identity holds, and where — across all pages.
|
|
578
568
|
*
|
|
@@ -634,7 +624,7 @@ var Identities = class {
|
|
|
634
624
|
* Ends every session the identity holds, so the next refresh on any device
|
|
635
625
|
* fails and the person signs in again. Access tokens already issued keep
|
|
636
626
|
* working until their short lifetime runs out. For a suspected compromise;
|
|
637
|
-
* `
|
|
627
|
+
* `delete` also takes the identity out of this Environment.
|
|
638
628
|
*/
|
|
639
629
|
revokeSessions(id) {
|
|
640
630
|
return this.client.request(
|
|
@@ -1210,7 +1200,9 @@ var LocalAuthorizer = class {
|
|
|
1210
1200
|
* With no argument, everything goes: grants and the hierarchy tree. Not
|
|
1211
1201
|
* needed in normal operation, where entries expire on their own; useful in
|
|
1212
1202
|
* tests and after a change whose reach you cannot name (a role's
|
|
1213
|
-
* permissions edited, a node moved).
|
|
1203
|
+
* permissions edited, a role deactivated or reactivated, a node moved). A
|
|
1204
|
+
* deactivated role grants nothing to anyone holding it, so until the cache
|
|
1205
|
+
* is cleared or expires, its holders keep being allowed locally.
|
|
1214
1206
|
*
|
|
1215
1207
|
* Multi-instance honesty: an invalidation reaches THIS process only. A
|
|
1216
1208
|
* webhook lands on one instance behind a load balancer; the others serve
|