@canopy-io/node 0.3.9 → 0.3.11

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 CHANGED
@@ -1,5 +1,17 @@
1
1
  # @canopy-io/node
2
2
 
3
+ ## 0.3.11
4
+
5
+ ### Patch Changes
6
+
7
+ - 4b08934: Organization policy types regenerated from the live spec. `updatePolicy` accepts `allowed_sign_in_methods`, a non-empty subset of the methods the Environment offers (`password`, `email_otp`, `sso`) or `null` to inherit them all; a method the Environment has off is refused with `organization.policy_loosens`. `getPolicy` returns the field on the organization's own values, on `environment` (what is offered) and on `effective` (what members may use, `["sso"]` alone while `require_sso` is on).
8
+
9
+ ## 0.3.10
10
+
11
+ ### Patch Changes
12
+
13
+ - b71e786: Webhook types regenerated from the live spec. Deliveries for a change directory sync made (`identity.created`, `identity.env_membership.*`, `organization.member.*`, `assignment.bulk_*`) now type `source: "scim"` and `directory_id`, and the directory's own activity is subscribable: `scim.user.provisioned` / `updated` / `deprovisioned` / `reactivated`, `scim.group.created` / `updated` / `deleted` / `member_added` / `member_removed` / `mapped` / `unmapped`. `identity.created` also types `source: "sso_jit"` with `connection_id` for an identity a first SSO sign-in created.
14
+
3
15
  ## 0.3.9
4
16
 
5
17
  ### Patch Changes
package/README.md CHANGED
@@ -147,7 +147,12 @@ await canopy.organizations.addMember(acme.id, {
147
147
  role_id: ownerRoleId,
148
148
  });
149
149
 
150
- await canopy.organizations.updatePolicy(acme.id, { mfa_required: true });
150
+ // An organization only tightens the Environment: a second factor where the
151
+ // Environment leaves it optional, and only some of the Environment's ways in.
152
+ await canopy.organizations.updatePolicy(acme.id, {
153
+ mfa_required: true,
154
+ allowed_sign_in_methods: ["password", "sso"],
155
+ });
151
156
  ```
152
157
 
153
158
  Directory sync (SCIM) opens when you name the roles an organization's identity
package/dist/index.d.cts CHANGED
@@ -2935,6 +2935,8 @@ interface components {
2935
2935
  mfa_factor_allowlist: ("totp" | "webauthn" | "email_otp")[];
2936
2936
  /** @enum {string} */
2937
2937
  mfa_after_sso: "exempt" | "require";
2938
+ /** @description The sign-in methods on offer: on the Environment, the ones it has turned on; on the effective policy, those narrowed by the organization, and `["sso"]` alone while it requires SSO. */
2939
+ allowed_sign_in_methods: ("password" | "email_otp" | "sso")[];
2938
2940
  require_sso: boolean;
2939
2941
  };
2940
2942
  OrganizationPolicyResponseDto: {
@@ -2944,6 +2946,8 @@ interface components {
2944
2946
  mfa_factor_allowlist?: ("totp" | "webauthn" | "email_otp")[] | null;
2945
2947
  /** @enum {string|null} */
2946
2948
  mfa_after_sso?: "exempt" | "require" | null;
2949
+ /** @description The methods the organization keeps of the Environment's, or null to inherit them all. */
2950
+ allowed_sign_in_methods?: ("password" | "email_otp" | "sso")[] | null;
2947
2951
  require_sso: boolean;
2948
2952
  /** @description The Environment's own settings, the floor this organization's policy tightens from. */
2949
2953
  environment: components["schemas"]["EffectiveOrganizationPolicyDto"];
@@ -2968,6 +2972,8 @@ interface components {
2968
2972
  * @enum {string|null}
2969
2973
  */
2970
2974
  mfa_after_sso?: "exempt" | "require" | null;
2975
+ /** @description The sign-in methods this organization's members may use. A non-empty subset of the methods the Environment offers (`password` unless the Environment turned it off, `email_otp` where the Environment turned it on, and `sso`); a method the Environment does not offer is refused with `organization.policy_loosens`. `null` inherits the Environment's. While `require_sso` is on, SSO is the only method whatever this says. */
2976
+ allowed_sign_in_methods?: ("password" | "email_otp" | "sso")[] | null;
2971
2977
  /** @description Members must sign in through SSO. Password and email-code logins are refused for the organization's members and for any email whose domain routes to a connection bound to this organization. */
2972
2978
  require_sso?: boolean;
2973
2979
  };
@@ -3900,10 +3906,20 @@ interface components {
3900
3906
  */
3901
3907
  environment_id?: string | null;
3902
3908
  /**
3903
- * @description Set when the change came from an accepted invitation.
3909
+ * Format: uuid
3910
+ * @description The SSO connection the identity first signed in through, for one created just in time.
3911
+ */
3912
+ connection_id?: string;
3913
+ /**
3914
+ * Format: uuid
3915
+ * @description The directory that made the change, when directory sync did.
3916
+ */
3917
+ directory_id?: string | null;
3918
+ /**
3919
+ * @description How the identity was created, when it was not created directly.
3904
3920
  * @enum {string}
3905
3921
  */
3906
- source?: "invite";
3922
+ source?: "invite" | "sso_jit" | "scim";
3907
3923
  };
3908
3924
  };
3909
3925
  };
@@ -3984,11 +4000,16 @@ interface components {
3984
4000
  * @description The invitation that was accepted.
3985
4001
  */
3986
4002
  invite_id?: string;
4003
+ /**
4004
+ * Format: uuid
4005
+ * @description The directory that made the change, when directory sync did.
4006
+ */
4007
+ directory_id?: string | null;
3987
4008
  /**
3988
4009
  * @description How the membership was created, when known.
3989
4010
  * @enum {string}
3990
4011
  */
3991
- source?: "identity_create" | "sso_jit" | "invite";
4012
+ source?: "identity_create" | "sso_jit" | "invite" | "scim";
3992
4013
  };
3993
4014
  };
3994
4015
  };
@@ -4002,6 +4023,16 @@ interface components {
4002
4023
  metadata: {
4003
4024
  /** @description Pending invitations into the Environment revoked with the membership. */
4004
4025
  revoked_pending_invites: number;
4026
+ /**
4027
+ * @description Set when directory sync made the change rather than somebody directly.
4028
+ * @enum {string}
4029
+ */
4030
+ source?: "scim";
4031
+ /**
4032
+ * Format: uuid
4033
+ * @description The directory that made the change, when directory sync did.
4034
+ */
4035
+ directory_id?: string | null;
4005
4036
  };
4006
4037
  };
4007
4038
  };
@@ -4102,6 +4133,16 @@ interface components {
4102
4133
  succeeded: number;
4103
4134
  /** @description How many were refused. */
4104
4135
  failed: number;
4136
+ /**
4137
+ * @description Set when directory sync made the change rather than somebody directly.
4138
+ * @enum {string}
4139
+ */
4140
+ source?: "scim";
4141
+ /**
4142
+ * Format: uuid
4143
+ * @description The directory that made the change, when directory sync did.
4144
+ */
4145
+ directory_id?: string | null;
4105
4146
  };
4106
4147
  };
4107
4148
  };
@@ -4133,6 +4174,16 @@ interface components {
4133
4174
  */
4134
4175
  role_id: string;
4135
4176
  }[];
4177
+ /**
4178
+ * @description Set when directory sync made the change rather than somebody directly.
4179
+ * @enum {string}
4180
+ */
4181
+ source?: "scim";
4182
+ /**
4183
+ * Format: uuid
4184
+ * @description The directory that made the change, when directory sync did.
4185
+ */
4186
+ directory_id?: string | null;
4136
4187
  };
4137
4188
  };
4138
4189
  };
@@ -4167,6 +4218,250 @@ interface components {
4167
4218
  };
4168
4219
  };
4169
4220
  };
4221
+ /** @description A delivery of the `scim.user.provisioned` webhook event. */
4222
+ WebhookScimUserProvisionedEvent: {
4223
+ /** @enum {string} */
4224
+ event: "scim.user.provisioned";
4225
+ data: components["schemas"]["ChangeEventDataDto"] & {
4226
+ /** @enum {string} */
4227
+ resource_type: "identity";
4228
+ metadata: {
4229
+ /**
4230
+ * Format: uuid
4231
+ * @description The directory that pushed the person.
4232
+ */
4233
+ directory_id: string;
4234
+ /** @description The address the provider pushed. */
4235
+ user_name: string;
4236
+ /** @description The provider's own id for the person. */
4237
+ external_id: string | null;
4238
+ /** @description True when the address already had an identity, which was linked rather than created. */
4239
+ linked: boolean;
4240
+ };
4241
+ };
4242
+ };
4243
+ /** @description A delivery of the `scim.user.updated` webhook event. */
4244
+ WebhookScimUserUpdatedEvent: {
4245
+ /** @enum {string} */
4246
+ event: "scim.user.updated";
4247
+ data: components["schemas"]["ChangeEventDataDto"] & {
4248
+ /** @enum {string} */
4249
+ resource_type: "identity";
4250
+ metadata: {
4251
+ /**
4252
+ * Format: uuid
4253
+ * @description The directory that changed the person.
4254
+ */
4255
+ directory_id: string;
4256
+ /** @description The address the provider holds for the person now. */
4257
+ user_name: string;
4258
+ /** @description The provider's own id for the person. */
4259
+ external_id: string | null;
4260
+ /** @description Whether the person is active in this directory. */
4261
+ active: boolean;
4262
+ };
4263
+ };
4264
+ };
4265
+ /** @description A delivery of the `scim.user.deprovisioned` webhook event. */
4266
+ WebhookScimUserDeprovisionedEvent: {
4267
+ /** @enum {string} */
4268
+ event: "scim.user.deprovisioned";
4269
+ data: components["schemas"]["ChangeEventDataDto"] & {
4270
+ /** @enum {string} */
4271
+ resource_type: "identity";
4272
+ metadata: {
4273
+ /**
4274
+ * Format: uuid
4275
+ * @description The directory that deactivated the person.
4276
+ */
4277
+ directory_id: string;
4278
+ /** @description The address the provider held for the person. */
4279
+ user_name: string;
4280
+ /** @description The provider's own id for the person. */
4281
+ external_id: string | null;
4282
+ };
4283
+ };
4284
+ };
4285
+ /** @description A delivery of the `scim.user.reactivated` webhook event. */
4286
+ WebhookScimUserReactivatedEvent: {
4287
+ /** @enum {string} */
4288
+ event: "scim.user.reactivated";
4289
+ data: components["schemas"]["ChangeEventDataDto"] & {
4290
+ /** @enum {string} */
4291
+ resource_type: "identity";
4292
+ metadata: {
4293
+ /**
4294
+ * Format: uuid
4295
+ * @description The directory that brought the person back.
4296
+ */
4297
+ directory_id: string;
4298
+ /** @description The address the provider holds for the person. */
4299
+ user_name: string;
4300
+ /** @description The provider's own id for the person. */
4301
+ external_id: string | null;
4302
+ /** @description True when the address already had an identity, which was linked rather than created. */
4303
+ linked: boolean;
4304
+ };
4305
+ };
4306
+ };
4307
+ /** @description A delivery of the `scim.group.created` webhook event. */
4308
+ WebhookScimGroupCreatedEvent: {
4309
+ /** @enum {string} */
4310
+ event: "scim.group.created";
4311
+ data: components["schemas"]["ChangeEventDataDto"] & {
4312
+ /** @enum {string} */
4313
+ resource_type: "scim_group";
4314
+ metadata: {
4315
+ /**
4316
+ * Format: uuid
4317
+ * @description The directory that pushed the group.
4318
+ */
4319
+ directory_id: string;
4320
+ /** @description The group's name. */
4321
+ display_name: string;
4322
+ /** @description The provider's own id for the group. */
4323
+ external_id: string | null;
4324
+ /** @description How many of its members this directory holds. */
4325
+ member_count: number;
4326
+ };
4327
+ };
4328
+ };
4329
+ /** @description A delivery of the `scim.group.updated` webhook event. */
4330
+ WebhookScimGroupUpdatedEvent: {
4331
+ /** @enum {string} */
4332
+ event: "scim.group.updated";
4333
+ data: components["schemas"]["ChangeEventDataDto"] & {
4334
+ /** @enum {string} */
4335
+ resource_type: "scim_group";
4336
+ metadata: {
4337
+ /**
4338
+ * Format: uuid
4339
+ * @description The directory that changed the group.
4340
+ */
4341
+ directory_id: string;
4342
+ /** @description The group's name now. */
4343
+ display_name: string;
4344
+ /** @description The provider's own id for the group. */
4345
+ external_id: string | null;
4346
+ /** @description How many of its members this directory holds now. */
4347
+ member_count: number;
4348
+ };
4349
+ };
4350
+ };
4351
+ /** @description A delivery of the `scim.group.deleted` webhook event. */
4352
+ WebhookScimGroupDeletedEvent: {
4353
+ /** @enum {string} */
4354
+ event: "scim.group.deleted";
4355
+ data: components["schemas"]["ChangeEventDataDto"] & {
4356
+ /** @enum {string} */
4357
+ resource_type: "scim_group";
4358
+ metadata: {
4359
+ /**
4360
+ * Format: uuid
4361
+ * @description The directory that removed the group.
4362
+ */
4363
+ directory_id: string;
4364
+ /** @description The group's name. */
4365
+ display_name: string;
4366
+ /** @description The provider's own id for the group. */
4367
+ external_id: string | null;
4368
+ };
4369
+ };
4370
+ };
4371
+ /** @description A delivery of the `scim.group.member_added` webhook event. */
4372
+ WebhookScimGroupMemberAddedEvent: {
4373
+ /** @enum {string} */
4374
+ event: "scim.group.member_added";
4375
+ data: components["schemas"]["ChangeEventDataDto"] & {
4376
+ /** @enum {string} */
4377
+ resource_type: "scim_group";
4378
+ metadata: {
4379
+ /**
4380
+ * Format: uuid
4381
+ * @description The directory the group belongs to.
4382
+ */
4383
+ directory_id: string;
4384
+ /**
4385
+ * Format: uuid
4386
+ * @description The person added.
4387
+ */
4388
+ identity_id: string;
4389
+ /**
4390
+ * Format: uuid
4391
+ * @description The directory's own id for the person.
4392
+ */
4393
+ directory_user_id: string;
4394
+ };
4395
+ };
4396
+ };
4397
+ /** @description A delivery of the `scim.group.member_removed` webhook event. */
4398
+ WebhookScimGroupMemberRemovedEvent: {
4399
+ /** @enum {string} */
4400
+ event: "scim.group.member_removed";
4401
+ data: components["schemas"]["ChangeEventDataDto"] & {
4402
+ /** @enum {string} */
4403
+ resource_type: "scim_group";
4404
+ metadata: {
4405
+ /**
4406
+ * Format: uuid
4407
+ * @description The directory the group belongs to.
4408
+ */
4409
+ directory_id: string;
4410
+ /**
4411
+ * Format: uuid
4412
+ * @description The person removed.
4413
+ */
4414
+ identity_id: string;
4415
+ /**
4416
+ * Format: uuid
4417
+ * @description The directory's own id for the person.
4418
+ */
4419
+ directory_user_id: string;
4420
+ };
4421
+ };
4422
+ };
4423
+ /** @description A delivery of the `scim.group.mapped` webhook event. */
4424
+ WebhookScimGroupMappedEvent: {
4425
+ /** @enum {string} */
4426
+ event: "scim.group.mapped";
4427
+ data: components["schemas"]["ChangeEventDataDto"] & {
4428
+ /** @enum {string} */
4429
+ resource_type: "scim_group";
4430
+ metadata: {
4431
+ /**
4432
+ * Format: uuid
4433
+ * @description The directory the group belongs to.
4434
+ */
4435
+ directory_id: string;
4436
+ /**
4437
+ * Format: uuid
4438
+ * @description The role the group's members now hold.
4439
+ */
4440
+ role_id: string;
4441
+ /**
4442
+ * Format: uuid
4443
+ * @description The node they hold it at.
4444
+ */
4445
+ application_node_id: string;
4446
+ };
4447
+ };
4448
+ };
4449
+ /** @description A delivery of the `scim.group.unmapped` webhook event. */
4450
+ WebhookScimGroupUnmappedEvent: {
4451
+ /** @enum {string} */
4452
+ event: "scim.group.unmapped";
4453
+ data: components["schemas"]["ChangeEventDataDto"] & {
4454
+ /** @enum {string} */
4455
+ resource_type: "scim_group";
4456
+ metadata: {
4457
+ /**
4458
+ * Format: uuid
4459
+ * @description The directory the group belongs to.
4460
+ */
4461
+ directory_id: string;
4462
+ };
4463
+ };
4464
+ };
4170
4465
  /** @description A delivery of the `role.created` webhook event. */
4171
4466
  WebhookRoleCreatedEvent: {
4172
4467
  /** @enum {string} */
@@ -4480,11 +4775,16 @@ interface components {
4480
4775
  * @description The invitation that was accepted.
4481
4776
  */
4482
4777
  invite_id?: string;
4778
+ /**
4779
+ * Format: uuid
4780
+ * @description The directory that made the change, when directory sync did.
4781
+ */
4782
+ directory_id?: string | null;
4483
4783
  /**
4484
4784
  * @description How the member joined, when it was not added directly.
4485
4785
  * @enum {string}
4486
4786
  */
4487
- source?: "sso_jit" | "invite";
4787
+ source?: "sso_jit" | "invite" | "scim";
4488
4788
  };
4489
4789
  };
4490
4790
  };
@@ -4513,6 +4813,16 @@ interface components {
4513
4813
  * @description The role it holds now.
4514
4814
  */
4515
4815
  to_role_id: string;
4816
+ /**
4817
+ * @description Set when directory sync made the change rather than somebody directly.
4818
+ * @enum {string}
4819
+ */
4820
+ source?: "scim";
4821
+ /**
4822
+ * Format: uuid
4823
+ * @description The directory that made the change, when directory sync did.
4824
+ */
4825
+ directory_id?: string | null;
4516
4826
  };
4517
4827
  };
4518
4828
  };
@@ -4538,6 +4848,16 @@ interface components {
4538
4848
  role_id: string;
4539
4849
  /** @description Grants it held beneath the organization, removed with the membership. */
4540
4850
  scoped_assignments_removed: number;
4851
+ /**
4852
+ * @description Set when directory sync made the change rather than somebody directly.
4853
+ * @enum {string}
4854
+ */
4855
+ source?: "scim";
4856
+ /**
4857
+ * Format: uuid
4858
+ * @description The directory that made the change, when directory sync did.
4859
+ */
4860
+ directory_id?: string | null;
4541
4861
  };
4542
4862
  };
4543
4863
  };
@@ -4560,6 +4880,8 @@ interface components {
4560
4880
  * @enum {string|null}
4561
4881
  */
4562
4882
  mfa_after_sso: "exempt" | "require" | null;
4883
+ /** @description The sign-in methods members may use, or null to inherit the Environment's. */
4884
+ allowed_sign_in_methods: ("password" | "email_otp" | "sso")[] | null;
4563
4885
  /** @description Whether members must sign in with SSO. */
4564
4886
  require_sso: boolean;
4565
4887
  };
package/dist/index.d.ts CHANGED
@@ -2935,6 +2935,8 @@ interface components {
2935
2935
  mfa_factor_allowlist: ("totp" | "webauthn" | "email_otp")[];
2936
2936
  /** @enum {string} */
2937
2937
  mfa_after_sso: "exempt" | "require";
2938
+ /** @description The sign-in methods on offer: on the Environment, the ones it has turned on; on the effective policy, those narrowed by the organization, and `["sso"]` alone while it requires SSO. */
2939
+ allowed_sign_in_methods: ("password" | "email_otp" | "sso")[];
2938
2940
  require_sso: boolean;
2939
2941
  };
2940
2942
  OrganizationPolicyResponseDto: {
@@ -2944,6 +2946,8 @@ interface components {
2944
2946
  mfa_factor_allowlist?: ("totp" | "webauthn" | "email_otp")[] | null;
2945
2947
  /** @enum {string|null} */
2946
2948
  mfa_after_sso?: "exempt" | "require" | null;
2949
+ /** @description The methods the organization keeps of the Environment's, or null to inherit them all. */
2950
+ allowed_sign_in_methods?: ("password" | "email_otp" | "sso")[] | null;
2947
2951
  require_sso: boolean;
2948
2952
  /** @description The Environment's own settings, the floor this organization's policy tightens from. */
2949
2953
  environment: components["schemas"]["EffectiveOrganizationPolicyDto"];
@@ -2968,6 +2972,8 @@ interface components {
2968
2972
  * @enum {string|null}
2969
2973
  */
2970
2974
  mfa_after_sso?: "exempt" | "require" | null;
2975
+ /** @description The sign-in methods this organization's members may use. A non-empty subset of the methods the Environment offers (`password` unless the Environment turned it off, `email_otp` where the Environment turned it on, and `sso`); a method the Environment does not offer is refused with `organization.policy_loosens`. `null` inherits the Environment's. While `require_sso` is on, SSO is the only method whatever this says. */
2976
+ allowed_sign_in_methods?: ("password" | "email_otp" | "sso")[] | null;
2971
2977
  /** @description Members must sign in through SSO. Password and email-code logins are refused for the organization's members and for any email whose domain routes to a connection bound to this organization. */
2972
2978
  require_sso?: boolean;
2973
2979
  };
@@ -3900,10 +3906,20 @@ interface components {
3900
3906
  */
3901
3907
  environment_id?: string | null;
3902
3908
  /**
3903
- * @description Set when the change came from an accepted invitation.
3909
+ * Format: uuid
3910
+ * @description The SSO connection the identity first signed in through, for one created just in time.
3911
+ */
3912
+ connection_id?: string;
3913
+ /**
3914
+ * Format: uuid
3915
+ * @description The directory that made the change, when directory sync did.
3916
+ */
3917
+ directory_id?: string | null;
3918
+ /**
3919
+ * @description How the identity was created, when it was not created directly.
3904
3920
  * @enum {string}
3905
3921
  */
3906
- source?: "invite";
3922
+ source?: "invite" | "sso_jit" | "scim";
3907
3923
  };
3908
3924
  };
3909
3925
  };
@@ -3984,11 +4000,16 @@ interface components {
3984
4000
  * @description The invitation that was accepted.
3985
4001
  */
3986
4002
  invite_id?: string;
4003
+ /**
4004
+ * Format: uuid
4005
+ * @description The directory that made the change, when directory sync did.
4006
+ */
4007
+ directory_id?: string | null;
3987
4008
  /**
3988
4009
  * @description How the membership was created, when known.
3989
4010
  * @enum {string}
3990
4011
  */
3991
- source?: "identity_create" | "sso_jit" | "invite";
4012
+ source?: "identity_create" | "sso_jit" | "invite" | "scim";
3992
4013
  };
3993
4014
  };
3994
4015
  };
@@ -4002,6 +4023,16 @@ interface components {
4002
4023
  metadata: {
4003
4024
  /** @description Pending invitations into the Environment revoked with the membership. */
4004
4025
  revoked_pending_invites: number;
4026
+ /**
4027
+ * @description Set when directory sync made the change rather than somebody directly.
4028
+ * @enum {string}
4029
+ */
4030
+ source?: "scim";
4031
+ /**
4032
+ * Format: uuid
4033
+ * @description The directory that made the change, when directory sync did.
4034
+ */
4035
+ directory_id?: string | null;
4005
4036
  };
4006
4037
  };
4007
4038
  };
@@ -4102,6 +4133,16 @@ interface components {
4102
4133
  succeeded: number;
4103
4134
  /** @description How many were refused. */
4104
4135
  failed: number;
4136
+ /**
4137
+ * @description Set when directory sync made the change rather than somebody directly.
4138
+ * @enum {string}
4139
+ */
4140
+ source?: "scim";
4141
+ /**
4142
+ * Format: uuid
4143
+ * @description The directory that made the change, when directory sync did.
4144
+ */
4145
+ directory_id?: string | null;
4105
4146
  };
4106
4147
  };
4107
4148
  };
@@ -4133,6 +4174,16 @@ interface components {
4133
4174
  */
4134
4175
  role_id: string;
4135
4176
  }[];
4177
+ /**
4178
+ * @description Set when directory sync made the change rather than somebody directly.
4179
+ * @enum {string}
4180
+ */
4181
+ source?: "scim";
4182
+ /**
4183
+ * Format: uuid
4184
+ * @description The directory that made the change, when directory sync did.
4185
+ */
4186
+ directory_id?: string | null;
4136
4187
  };
4137
4188
  };
4138
4189
  };
@@ -4167,6 +4218,250 @@ interface components {
4167
4218
  };
4168
4219
  };
4169
4220
  };
4221
+ /** @description A delivery of the `scim.user.provisioned` webhook event. */
4222
+ WebhookScimUserProvisionedEvent: {
4223
+ /** @enum {string} */
4224
+ event: "scim.user.provisioned";
4225
+ data: components["schemas"]["ChangeEventDataDto"] & {
4226
+ /** @enum {string} */
4227
+ resource_type: "identity";
4228
+ metadata: {
4229
+ /**
4230
+ * Format: uuid
4231
+ * @description The directory that pushed the person.
4232
+ */
4233
+ directory_id: string;
4234
+ /** @description The address the provider pushed. */
4235
+ user_name: string;
4236
+ /** @description The provider's own id for the person. */
4237
+ external_id: string | null;
4238
+ /** @description True when the address already had an identity, which was linked rather than created. */
4239
+ linked: boolean;
4240
+ };
4241
+ };
4242
+ };
4243
+ /** @description A delivery of the `scim.user.updated` webhook event. */
4244
+ WebhookScimUserUpdatedEvent: {
4245
+ /** @enum {string} */
4246
+ event: "scim.user.updated";
4247
+ data: components["schemas"]["ChangeEventDataDto"] & {
4248
+ /** @enum {string} */
4249
+ resource_type: "identity";
4250
+ metadata: {
4251
+ /**
4252
+ * Format: uuid
4253
+ * @description The directory that changed the person.
4254
+ */
4255
+ directory_id: string;
4256
+ /** @description The address the provider holds for the person now. */
4257
+ user_name: string;
4258
+ /** @description The provider's own id for the person. */
4259
+ external_id: string | null;
4260
+ /** @description Whether the person is active in this directory. */
4261
+ active: boolean;
4262
+ };
4263
+ };
4264
+ };
4265
+ /** @description A delivery of the `scim.user.deprovisioned` webhook event. */
4266
+ WebhookScimUserDeprovisionedEvent: {
4267
+ /** @enum {string} */
4268
+ event: "scim.user.deprovisioned";
4269
+ data: components["schemas"]["ChangeEventDataDto"] & {
4270
+ /** @enum {string} */
4271
+ resource_type: "identity";
4272
+ metadata: {
4273
+ /**
4274
+ * Format: uuid
4275
+ * @description The directory that deactivated the person.
4276
+ */
4277
+ directory_id: string;
4278
+ /** @description The address the provider held for the person. */
4279
+ user_name: string;
4280
+ /** @description The provider's own id for the person. */
4281
+ external_id: string | null;
4282
+ };
4283
+ };
4284
+ };
4285
+ /** @description A delivery of the `scim.user.reactivated` webhook event. */
4286
+ WebhookScimUserReactivatedEvent: {
4287
+ /** @enum {string} */
4288
+ event: "scim.user.reactivated";
4289
+ data: components["schemas"]["ChangeEventDataDto"] & {
4290
+ /** @enum {string} */
4291
+ resource_type: "identity";
4292
+ metadata: {
4293
+ /**
4294
+ * Format: uuid
4295
+ * @description The directory that brought the person back.
4296
+ */
4297
+ directory_id: string;
4298
+ /** @description The address the provider holds for the person. */
4299
+ user_name: string;
4300
+ /** @description The provider's own id for the person. */
4301
+ external_id: string | null;
4302
+ /** @description True when the address already had an identity, which was linked rather than created. */
4303
+ linked: boolean;
4304
+ };
4305
+ };
4306
+ };
4307
+ /** @description A delivery of the `scim.group.created` webhook event. */
4308
+ WebhookScimGroupCreatedEvent: {
4309
+ /** @enum {string} */
4310
+ event: "scim.group.created";
4311
+ data: components["schemas"]["ChangeEventDataDto"] & {
4312
+ /** @enum {string} */
4313
+ resource_type: "scim_group";
4314
+ metadata: {
4315
+ /**
4316
+ * Format: uuid
4317
+ * @description The directory that pushed the group.
4318
+ */
4319
+ directory_id: string;
4320
+ /** @description The group's name. */
4321
+ display_name: string;
4322
+ /** @description The provider's own id for the group. */
4323
+ external_id: string | null;
4324
+ /** @description How many of its members this directory holds. */
4325
+ member_count: number;
4326
+ };
4327
+ };
4328
+ };
4329
+ /** @description A delivery of the `scim.group.updated` webhook event. */
4330
+ WebhookScimGroupUpdatedEvent: {
4331
+ /** @enum {string} */
4332
+ event: "scim.group.updated";
4333
+ data: components["schemas"]["ChangeEventDataDto"] & {
4334
+ /** @enum {string} */
4335
+ resource_type: "scim_group";
4336
+ metadata: {
4337
+ /**
4338
+ * Format: uuid
4339
+ * @description The directory that changed the group.
4340
+ */
4341
+ directory_id: string;
4342
+ /** @description The group's name now. */
4343
+ display_name: string;
4344
+ /** @description The provider's own id for the group. */
4345
+ external_id: string | null;
4346
+ /** @description How many of its members this directory holds now. */
4347
+ member_count: number;
4348
+ };
4349
+ };
4350
+ };
4351
+ /** @description A delivery of the `scim.group.deleted` webhook event. */
4352
+ WebhookScimGroupDeletedEvent: {
4353
+ /** @enum {string} */
4354
+ event: "scim.group.deleted";
4355
+ data: components["schemas"]["ChangeEventDataDto"] & {
4356
+ /** @enum {string} */
4357
+ resource_type: "scim_group";
4358
+ metadata: {
4359
+ /**
4360
+ * Format: uuid
4361
+ * @description The directory that removed the group.
4362
+ */
4363
+ directory_id: string;
4364
+ /** @description The group's name. */
4365
+ display_name: string;
4366
+ /** @description The provider's own id for the group. */
4367
+ external_id: string | null;
4368
+ };
4369
+ };
4370
+ };
4371
+ /** @description A delivery of the `scim.group.member_added` webhook event. */
4372
+ WebhookScimGroupMemberAddedEvent: {
4373
+ /** @enum {string} */
4374
+ event: "scim.group.member_added";
4375
+ data: components["schemas"]["ChangeEventDataDto"] & {
4376
+ /** @enum {string} */
4377
+ resource_type: "scim_group";
4378
+ metadata: {
4379
+ /**
4380
+ * Format: uuid
4381
+ * @description The directory the group belongs to.
4382
+ */
4383
+ directory_id: string;
4384
+ /**
4385
+ * Format: uuid
4386
+ * @description The person added.
4387
+ */
4388
+ identity_id: string;
4389
+ /**
4390
+ * Format: uuid
4391
+ * @description The directory's own id for the person.
4392
+ */
4393
+ directory_user_id: string;
4394
+ };
4395
+ };
4396
+ };
4397
+ /** @description A delivery of the `scim.group.member_removed` webhook event. */
4398
+ WebhookScimGroupMemberRemovedEvent: {
4399
+ /** @enum {string} */
4400
+ event: "scim.group.member_removed";
4401
+ data: components["schemas"]["ChangeEventDataDto"] & {
4402
+ /** @enum {string} */
4403
+ resource_type: "scim_group";
4404
+ metadata: {
4405
+ /**
4406
+ * Format: uuid
4407
+ * @description The directory the group belongs to.
4408
+ */
4409
+ directory_id: string;
4410
+ /**
4411
+ * Format: uuid
4412
+ * @description The person removed.
4413
+ */
4414
+ identity_id: string;
4415
+ /**
4416
+ * Format: uuid
4417
+ * @description The directory's own id for the person.
4418
+ */
4419
+ directory_user_id: string;
4420
+ };
4421
+ };
4422
+ };
4423
+ /** @description A delivery of the `scim.group.mapped` webhook event. */
4424
+ WebhookScimGroupMappedEvent: {
4425
+ /** @enum {string} */
4426
+ event: "scim.group.mapped";
4427
+ data: components["schemas"]["ChangeEventDataDto"] & {
4428
+ /** @enum {string} */
4429
+ resource_type: "scim_group";
4430
+ metadata: {
4431
+ /**
4432
+ * Format: uuid
4433
+ * @description The directory the group belongs to.
4434
+ */
4435
+ directory_id: string;
4436
+ /**
4437
+ * Format: uuid
4438
+ * @description The role the group's members now hold.
4439
+ */
4440
+ role_id: string;
4441
+ /**
4442
+ * Format: uuid
4443
+ * @description The node they hold it at.
4444
+ */
4445
+ application_node_id: string;
4446
+ };
4447
+ };
4448
+ };
4449
+ /** @description A delivery of the `scim.group.unmapped` webhook event. */
4450
+ WebhookScimGroupUnmappedEvent: {
4451
+ /** @enum {string} */
4452
+ event: "scim.group.unmapped";
4453
+ data: components["schemas"]["ChangeEventDataDto"] & {
4454
+ /** @enum {string} */
4455
+ resource_type: "scim_group";
4456
+ metadata: {
4457
+ /**
4458
+ * Format: uuid
4459
+ * @description The directory the group belongs to.
4460
+ */
4461
+ directory_id: string;
4462
+ };
4463
+ };
4464
+ };
4170
4465
  /** @description A delivery of the `role.created` webhook event. */
4171
4466
  WebhookRoleCreatedEvent: {
4172
4467
  /** @enum {string} */
@@ -4480,11 +4775,16 @@ interface components {
4480
4775
  * @description The invitation that was accepted.
4481
4776
  */
4482
4777
  invite_id?: string;
4778
+ /**
4779
+ * Format: uuid
4780
+ * @description The directory that made the change, when directory sync did.
4781
+ */
4782
+ directory_id?: string | null;
4483
4783
  /**
4484
4784
  * @description How the member joined, when it was not added directly.
4485
4785
  * @enum {string}
4486
4786
  */
4487
- source?: "sso_jit" | "invite";
4787
+ source?: "sso_jit" | "invite" | "scim";
4488
4788
  };
4489
4789
  };
4490
4790
  };
@@ -4513,6 +4813,16 @@ interface components {
4513
4813
  * @description The role it holds now.
4514
4814
  */
4515
4815
  to_role_id: string;
4816
+ /**
4817
+ * @description Set when directory sync made the change rather than somebody directly.
4818
+ * @enum {string}
4819
+ */
4820
+ source?: "scim";
4821
+ /**
4822
+ * Format: uuid
4823
+ * @description The directory that made the change, when directory sync did.
4824
+ */
4825
+ directory_id?: string | null;
4516
4826
  };
4517
4827
  };
4518
4828
  };
@@ -4538,6 +4848,16 @@ interface components {
4538
4848
  role_id: string;
4539
4849
  /** @description Grants it held beneath the organization, removed with the membership. */
4540
4850
  scoped_assignments_removed: number;
4851
+ /**
4852
+ * @description Set when directory sync made the change rather than somebody directly.
4853
+ * @enum {string}
4854
+ */
4855
+ source?: "scim";
4856
+ /**
4857
+ * Format: uuid
4858
+ * @description The directory that made the change, when directory sync did.
4859
+ */
4860
+ directory_id?: string | null;
4541
4861
  };
4542
4862
  };
4543
4863
  };
@@ -4560,6 +4880,8 @@ interface components {
4560
4880
  * @enum {string|null}
4561
4881
  */
4562
4882
  mfa_after_sso: "exempt" | "require" | null;
4883
+ /** @description The sign-in methods members may use, or null to inherit the Environment's. */
4884
+ allowed_sign_in_methods: ("password" | "email_otp" | "sso")[] | null;
4563
4885
  /** @description Whether members must sign in with SSO. */
4564
4886
  require_sso: boolean;
4565
4887
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@canopy-io/node",
3
- "version": "0.3.9",
3
+ "version": "0.3.11",
4
4
  "description": "Official TypeScript SDK for Canopy — hierarchical identity and access management.",
5
5
  "license": "MIT",
6
6
  "author": "Canopy Identity Inc.",