diff --git a/src/main/kotlin/com/workos/organizations/OrganizationsApi.kt b/src/main/kotlin/com/workos/organizations/OrganizationsApi.kt index 4d7b7a82..4bf3077e 100644 --- a/src/main/kotlin/com/workos/organizations/OrganizationsApi.kt +++ b/src/main/kotlin/com/workos/organizations/OrganizationsApi.kt @@ -24,6 +24,8 @@ class OrganizationsApi(private val workos: WorkOS) { * @param allowProfilesOutsideOrganization Whether the Connections within this Organization should allow Profiles that do not have a domain that is present in the set of the Organization's User Email Domains. * @param domainData A list of data for the domains of the organization. * @param domains A list of domains for the organization. + * @param externalId The external identifier of the organization. + * @param metadata Object containing metadata key/value pairs associated with the organization. */ @JsonInclude(Include.NON_NULL) class CreateOrganizationOptions @JvmOverloads constructor( @@ -36,7 +38,13 @@ class OrganizationsApi(private val workos: WorkOS) { val domainData: List? = null, @Deprecated("Use domainData instead.") - val domains: List? = null + val domains: List? = null, + + @JsonProperty("external_id") + val externalId: String? = null, + + @JsonProperty("metadata") + val metadata: Map? = null ) { /** * Builder class for creating [CreateOrganizationOptions]. @@ -50,6 +58,10 @@ class OrganizationsApi(private val workos: WorkOS) { private var domains: List? = null + private var externalId: String? = null + + private var metadata: Map? = null + /** * Sets the name of the organization. */ @@ -72,11 +84,21 @@ class OrganizationsApi(private val workos: WorkOS) { @Deprecated("Use domainData instead.") fun domains(value: List) = apply { domains = value } + /** + * Sets the external identifier of the organization. + */ + fun externalId(value: String) = apply { externalId = value } + + /** + * Sets the metadata for the organization. + */ + fun metadata(value: Map) = apply { metadata = value } + /** * Creates an instance of [CreateOrganizationOptions] with the given params. */ fun build(): CreateOrganizationOptions { - return CreateOrganizationOptions(name, allowProfilesOutsideOrganization, domainData, domains) + return CreateOrganizationOptions(name, allowProfilesOutsideOrganization, domainData, domains, externalId, metadata) } } @@ -158,6 +180,13 @@ class OrganizationsApi(private val workos: WorkOS) { return workos.get("/organizations/$id", Organization::class.java) } + /** + * Fetches a single organization by external ID. + */ + fun getOrganizationByExternalId(externalId: String): Organization { + return workos.get("/organizations/external_id/$externalId", Organization::class.java) + } + /** * Parameters for [listOrganizations] method. * Use `ListOrganizationsOptions.builder()` to create a new builder instance. @@ -220,6 +249,8 @@ class OrganizationsApi(private val workos: WorkOS) { * @param allowProfilesOutsideOrganization Whether the Connections within this Organization should allow Profiles that do not have a domain that is present in the set of the Organization's User Email Domains. * @param domainData A list of data for the domains of the organization. * @param domains A list of domains for the organization. + * @param externalId The external identifier of the organization. + * @param metadata Object containing metadata key/value pairs associated with the organization. */ @JsonInclude(Include.NON_NULL) class UpdateOrganizationOptions @JvmOverloads constructor( @@ -232,7 +263,13 @@ class OrganizationsApi(private val workos: WorkOS) { val domainData: List? = null, @Deprecated("Use domainData instead.") - val domains: List? = null + val domains: List? = null, + + @JsonProperty("external_id") + val externalId: String? = null, + + @JsonProperty("metadata") + val metadata: Map? = null ) { /** * Builder class for [UpdateOrganizationOptions]. @@ -246,6 +283,10 @@ class OrganizationsApi(private val workos: WorkOS) { private var domains: List? = null + private var externalId: String? = null + + private var metadata: Map? = null + /** * Sets the name of the organization. */ @@ -268,11 +309,21 @@ class OrganizationsApi(private val workos: WorkOS) { @Deprecated("Use domainData instead.") fun domains(value: List) = apply { domains = value } + /** + * Sets the external identifier of the organization. + */ + fun externalId(value: String) = apply { externalId = value } + + /** + * Sets the metadata for the organization. + */ + fun metadata(value: Map) = apply { metadata = value } + /** * Creates an instance of [UpdateOrganizationOptions]. */ fun build(): UpdateOrganizationOptions { - return UpdateOrganizationOptions(name, allowProfilesOutsideOrganization, domainData, domains) + return UpdateOrganizationOptions(name, allowProfilesOutsideOrganization, domainData, domains, externalId, metadata) } } diff --git a/src/main/kotlin/com/workos/organizations/models/Organization.kt b/src/main/kotlin/com/workos/organizations/models/Organization.kt index c1eb4005..67e3ada9 100644 --- a/src/main/kotlin/com/workos/organizations/models/Organization.kt +++ b/src/main/kotlin/com/workos/organizations/models/Organization.kt @@ -10,6 +10,8 @@ import com.fasterxml.jackson.annotation.JsonProperty * @param obj The unique object identifier type of the record. * @param id The unique identifier for the Organization. * @param name The name of the Organization. + * @param externalId The external ID of the Organization. + * @param metadata A JSON object containing additional information about the organization. * @param allowProfilesOutsideOrganization Whether the Connections within this Organization should allow Profiles that do not have a domain that is present in the set of the Organization's User Email Domains. * @param domains List of [OrganizationDomain]s. * @param createdAt The timestamp of when the Organization was created. @@ -27,6 +29,14 @@ data class Organization @JvmField val name: String, + @JvmField + @JsonProperty("external_id") + val externalId: String? = null, + + @JvmField + @JsonProperty("metadata") + val metadata: Map? = null, + @JvmField @JsonProperty("allow_profiles_outside_organization") val allowProfilesOutsideOrganization: Boolean, diff --git a/src/main/kotlin/com/workos/usermanagement/UserManagementApi.kt b/src/main/kotlin/com/workos/usermanagement/UserManagementApi.kt index 8a327213..874c0782 100644 --- a/src/main/kotlin/com/workos/usermanagement/UserManagementApi.kt +++ b/src/main/kotlin/com/workos/usermanagement/UserManagementApi.kt @@ -47,6 +47,11 @@ class UserManagementApi(private val workos: WorkOS) { return workos.get("/user_management/users/$userId", User::class.java) } + /** Get the details of an existing user by external ID. */ + fun getUserByExternalId(externalId: String): User { + return workos.get("/user_management/users/external_id/$externalId", User::class.java) + } + /** Get a list of all the existing users matching the criteria specified. */ fun listUsers(options: ListUsersOptions? = null): Users { val params: Map = diff --git a/src/main/kotlin/com/workos/usermanagement/builders/CreateUserOptionsBuilder.kt b/src/main/kotlin/com/workos/usermanagement/builders/CreateUserOptionsBuilder.kt index c0bd05af..6b1da790 100644 --- a/src/main/kotlin/com/workos/usermanagement/builders/CreateUserOptionsBuilder.kt +++ b/src/main/kotlin/com/workos/usermanagement/builders/CreateUserOptionsBuilder.kt @@ -12,7 +12,9 @@ import com.workos.usermanagement.types.PasswordHashTypeEnumType * @param passwordHashType The algorithm originally used to hash the password, used when providing a password_hash. * @param firstName The first name of the user. * @param lastName The last name of the user. - * @param emailVerified Whether the user’s email address was previously verified. + * @param emailVerified Whether the user's email address was previously verified. + * @param externalId The external identifier of the user. + * @param metadata Object containing metadata key/value pairs associated with the user. */ class CreateUserOptionsBuilder @JvmOverloads constructor( val email: String, @@ -22,6 +24,8 @@ class CreateUserOptionsBuilder @JvmOverloads constructor( override var firstName: String? = null, override var lastName: String? = null, override var emailVerified: Boolean? = null, + var externalId: String? = null, + var metadata: Map? = null ) : AbstractUserOptionsBuilder( password, passwordHash, @@ -30,6 +34,16 @@ class CreateUserOptionsBuilder @JvmOverloads constructor( lastName, emailVerified ) { + /** + * Sets the external identifier of the user. + */ + fun externalId(value: String) = apply { externalId = value } + + /** + * Sets the metadata for the user. + */ + fun metadata(value: Map) = apply { metadata = value } + /** * Generates the CreateUserOptions object. */ @@ -42,6 +56,8 @@ class CreateUserOptionsBuilder @JvmOverloads constructor( firstName = this.firstName, lastName = this.lastName, emailVerified = this.emailVerified, + externalId = this.externalId, + metadata = this.metadata ) } diff --git a/src/main/kotlin/com/workos/usermanagement/builders/UpdateUserOptionsBuilder.kt b/src/main/kotlin/com/workos/usermanagement/builders/UpdateUserOptionsBuilder.kt index 5193f5da..3e6b503e 100644 --- a/src/main/kotlin/com/workos/usermanagement/builders/UpdateUserOptionsBuilder.kt +++ b/src/main/kotlin/com/workos/usermanagement/builders/UpdateUserOptionsBuilder.kt @@ -10,10 +10,12 @@ import com.workos.usermanagement.types.UpdateUserOptions * @param email The email address of the user. * @param firstName The first name of the user. * @param lastName The last name of the user. - * @param emailVerified Whether the user’s email address was previously verified. + * @param emailVerified Whether the user's email address was previously verified. * @param password The password to set for the user. * @param passwordHash The hashed password to set for the user. Mutually exclusive with password. * @param passwordHashType The algorithm originally used to hash the password, used when providing a password_hash. + * @param externalId The external identifier of the user. + * @param metadata Object containing metadata key/value pairs associated with the user. */ class UpdateUserOptionsBuilder @JvmOverloads constructor( val id: String, @@ -24,6 +26,8 @@ class UpdateUserOptionsBuilder @JvmOverloads constructor( override var password: String? = null, override var passwordHash: String? = null, override var passwordHashType: PasswordHashTypeEnumType? = null, + var externalId: String? = null, + var metadata: Map? = null ) : AbstractUserOptionsBuilder( password, passwordHash, @@ -45,6 +49,8 @@ class UpdateUserOptionsBuilder @JvmOverloads constructor( password = this.password, passwordHash = this.passwordHash, passwordHashType = this.passwordHashType, + externalId = this.externalId, + metadata = this.metadata ) } @@ -53,6 +59,16 @@ class UpdateUserOptionsBuilder @JvmOverloads constructor( */ fun email(value: String) = apply { email = value } + /** + * Sets the external identifier of the user. + */ + fun externalId(value: String) = apply { externalId = value } + + /** + * Sets the metadata for the user. + */ + fun metadata(value: Map) = apply { metadata = value } + /** * @suppress */ diff --git a/src/main/kotlin/com/workos/usermanagement/models/User.kt b/src/main/kotlin/com/workos/usermanagement/models/User.kt index 97f6f8a6..2d010a7f 100644 --- a/src/main/kotlin/com/workos/usermanagement/models/User.kt +++ b/src/main/kotlin/com/workos/usermanagement/models/User.kt @@ -10,7 +10,9 @@ import com.fasterxml.jackson.annotation.JsonProperty * @param email The email address of the user. * @param firstName The first name of the user. * @param lastName The last name of the user. - * @param emailVerified Whether the user’s email has been verified. + * @param externalId The external ID of the user. + * @param metadata A JSON object containing additional information about the user. + * @param emailVerified Whether the user's email has been verified. * @param profilePictureUrl A URL reference to an image representing the user. * @param lastSignInAt The timestamp when the user last signed in. * @param createdAt The timestamp when the user was created. @@ -29,6 +31,12 @@ data class User @JsonCreator constructor( @JsonProperty("last_name") val lastName: String? = null, + @JsonProperty("external_id") + val externalId: String? = null, + + @JsonProperty("metadata") + val metadata: Map? = null, + @JsonProperty("email_verified") val emailVerified: Boolean, diff --git a/src/main/kotlin/com/workos/usermanagement/types/CreateUserOptions.kt b/src/main/kotlin/com/workos/usermanagement/types/CreateUserOptions.kt index b36d7319..2b6bbbed 100644 --- a/src/main/kotlin/com/workos/usermanagement/types/CreateUserOptions.kt +++ b/src/main/kotlin/com/workos/usermanagement/types/CreateUserOptions.kt @@ -42,12 +42,24 @@ class CreateUserOptions @JvmOverloads constructor( val lastName: String? = null, /** - * Whether the user’s email address was previously verified. + * Whether the user's email address was previously verified. * - * You should normally use the email verification flow to verify a user’s email address. However, if the user’s email was previously verified, or is being migrated from an existing user store, this can be set to true to mark it as already verified. + * You should normally use the email verification flow to verify a user's email address. However, if the user's email was previously verified, or is being migrated from an existing user store, this can be set to true to mark it as already verified. */ @JsonProperty("email_verified") - val emailVerified: Boolean? = null + val emailVerified: Boolean? = null, + + /** + * The external identifier of the user. + */ + @JsonProperty("external_id") + val externalId: String? = null, + + /** + * Object containing metadata key/value pairs associated with the user. + */ + @JsonProperty("metadata") + val metadata: Map? = null ) { init { require(email.isNotBlank()) { "Email is required" } diff --git a/src/main/kotlin/com/workos/usermanagement/types/UpdateUserOptions.kt b/src/main/kotlin/com/workos/usermanagement/types/UpdateUserOptions.kt index 0e8e59ab..be22ca10 100644 --- a/src/main/kotlin/com/workos/usermanagement/types/UpdateUserOptions.kt +++ b/src/main/kotlin/com/workos/usermanagement/types/UpdateUserOptions.kt @@ -51,7 +51,19 @@ class UpdateUserOptions @JvmOverloads constructor( * The algorithm originally used to hash the password, used when providing a password_hash. */ @JsonProperty("password_hash_type") - val passwordHashType: PasswordHashTypeEnumType? = null + val passwordHashType: PasswordHashTypeEnumType? = null, + + /** + * The external identifier of the user. + */ + @JsonProperty("external_id") + val externalId: String? = null, + + /** + * Object containing metadata key/value pairs associated with the user. + */ + @JsonProperty("metadata") + val metadata: Map? = null ) { init { require(id.isNotBlank()) { "User id is required" } diff --git a/src/test/kotlin/com/workos/test/organizations/OrganizationsApiTest.kt b/src/test/kotlin/com/workos/test/organizations/OrganizationsApiTest.kt index 864b3ed4..be5ad621 100644 --- a/src/test/kotlin/com/workos/test/organizations/OrganizationsApiTest.kt +++ b/src/test/kotlin/com/workos/test/organizations/OrganizationsApiTest.kt @@ -27,6 +27,8 @@ class OrganizationsApiTest : TestBase() { "name": "$organizationDomainName", "object": "organization", "id": "$organizationId", + "external_id": null, + "metadata": null, "allow_profiles_outside_organization": false, "created_at": "2021-10-28T15:13:51.874Z", "updated_at": "2021-10-28T15:14:03.032Z", @@ -60,6 +62,8 @@ class OrganizationsApiTest : TestBase() { assertEquals(data["organizationId"], organization.id) assertEquals(data["organizationDomainName"], organization.name) + assertEquals(null, organization.externalId) + assertEquals(null, organization.metadata) assertEquals(data["organizationDomainId"], organization.domains[0].id) } @@ -97,6 +101,8 @@ class OrganizationsApiTest : TestBase() { assertEquals(data["organizationId"], organization.id) assertEquals(data["organizationDomainName"], organization.name) + assertEquals(null, organization.externalId) + assertEquals(null, organization.metadata) assertEquals(data["organizationDomainId"], organization.domains[0].id) } @@ -122,6 +128,8 @@ class OrganizationsApiTest : TestBase() { assertEquals(data["organizationId"], organization.id) assertEquals(data["organizationDomainName"], organization.name) + assertEquals(null, organization.externalId) + assertEquals(null, organization.metadata) assertEquals(data["organizationDomainId"], organization.domains[0].id) } @@ -166,6 +174,7 @@ class OrganizationsApiTest : TestBase() { assertEquals(data["organizationId"], organization.id) assertEquals(data["organizationDomainName"], organization.name) + assertEquals(null, organization.externalId) assertEquals(data["organizationDomainId"], organization.domains[0].id) } @@ -179,6 +188,7 @@ class OrganizationsApiTest : TestBase() { "name": "Organization Name", "object": "organization", "id": "org_domain_01EHT88Z8WZEFWYPM6EC9BX2R8", + "external_id": null, "allow_profiles_outside_organization": false, "created_at": "2021-10-28T15:13:51.874Z", "updated_at": "2021-10-28T15:14:03.032Z", @@ -255,6 +265,8 @@ class OrganizationsApiTest : TestBase() { "name": "$organizationDomainName", "object": "organization", "id": "$organizationId", + "external_id": null, + "metadata": null, "allow_profiles_outside_organization": false, "created_at": "2021-10-28T15:13:51.874Z", "updated_at": "2021-10-28T15:14:03.032Z", @@ -275,6 +287,53 @@ class OrganizationsApiTest : TestBase() { assertEquals(organizationId, organization.id) assertEquals(organizationDomainName, organization.name) + assertEquals(null, organization.externalId) + assertEquals(null, organization.metadata) + assertEquals(organizationDomainId, organization.domains[0].id) + assertEquals(OrganizationDomainState.Verified, organization.domains[0].state) + assertEquals(OrganizationDomainVerificationStrategy.Dns, organization.domains[0].verificationStrategy) + assertEquals("rqURsMUCuiaSggGyed8ZAnMk", organization.domains[0].verificationToken) + } + + @Test + fun getOrganizationByExternalIdShouldReturnPayload() { + val workos = createWorkOSClient() + + val organizationId = "org_01FJYCNTB6VC4K5R8BTF86286Q" + val organizationDomainId = "org_domain_01EHT88Z8WZEFWYPM6EC9BX2R8" + val organizationDomainName = "Test Organization" + val externalId = "ext_123" + + stubResponse( + url = "/organizations/external_id/$externalId", + responseBody = """{ + "name": "$organizationDomainName", + "object": "organization", + "id": "$organizationId", + "external_id": "$externalId", + "metadata": null, + "allow_profiles_outside_organization": false, + "created_at": "2021-10-28T15:13:51.874Z", + "updated_at": "2021-10-28T15:14:03.032Z", + "domains": [ + { + "domain": "example.com", + "object": "organization_domain", + "id": "$organizationDomainId", + "state": "verified", + "verification_strategy": "dns", + "verification_token": "rqURsMUCuiaSggGyed8ZAnMk" + } + ] + }""" + ) + + val organization = workos.organizations.getOrganizationByExternalId(externalId) + + assertEquals(organizationId, organization.id) + assertEquals(organizationDomainName, organization.name) + assertEquals(externalId, organization.externalId) + assertEquals(null, organization.metadata) assertEquals(organizationDomainId, organization.domains[0].id) assertEquals(OrganizationDomainState.Verified, organization.domains[0].state) assertEquals(OrganizationDomainVerificationStrategy.Dns, organization.domains[0].verificationStrategy) @@ -297,6 +356,8 @@ class OrganizationsApiTest : TestBase() { "name": "$organizationDomainName", "object": "organization", "id": "$organizationId", + "external_id": null, + "metadata": null, "allow_profiles_outside_organization": false, "created_at": "2021-10-28T15:13:51.874Z", "updated_at": "2021-10-28T15:14:03.032Z", @@ -323,6 +384,8 @@ class OrganizationsApiTest : TestBase() { assertEquals(organizationId, organizations.get(0).id) assertEquals(organizationDomainName, organizations.get(0).name) + assertEquals(null, organizations.get(0).externalId) + assertEquals(null, organizations.get(0).metadata) assertEquals(organizationDomainId, organizations.get(0).domains[0].id) assertEquals(OrganizationDomainState.Verified, organizations.get(0).domains[0].state) assertEquals(OrganizationDomainVerificationStrategy.Dns, organizations.get(0).domains[0].verificationStrategy) @@ -346,6 +409,8 @@ class OrganizationsApiTest : TestBase() { "name": "$organizationDomainName", "object": "organization", "id": "$organizationId", + "external_id": null, + "metadata": null, "allow_profiles_outside_organization": false, "created_at": "2021-10-28T15:13:51.874Z", "updated_at": "2021-10-28T15:14:03.032Z", @@ -395,6 +460,8 @@ class OrganizationsApiTest : TestBase() { "name": "$organizationDomainName", "object": "organization", "id": "$organizationId", + "external_id": null, + "metadata": null, "allow_profiles_outside_organization": false, "created_at": "2021-10-28T15:13:51.874Z", "updated_at": "2021-10-28T15:14:03.032Z", @@ -437,6 +504,8 @@ class OrganizationsApiTest : TestBase() { "name": "$organizationDomainName", "object": "organization", "id": "$organizationId", + "external_id": null, + "metadata": null, "allow_profiles_outside_organization": false, "created_at": "2021-10-28T15:13:51.874Z", "updated_at": "2021-10-28T15:14:03.032Z", @@ -470,6 +539,8 @@ class OrganizationsApiTest : TestBase() { assertEquals(data["organizationId"], organization.id) assertEquals(data["organizationDomainName"], organization.name) + assertEquals(null, organization.externalId) + assertEquals(null, organization.metadata) assertEquals(data["organizationDomainId"], organization.domains[0].id) } @@ -507,6 +578,8 @@ class OrganizationsApiTest : TestBase() { assertEquals(data["organizationId"], organization.id) assertEquals(data["organizationDomainName"], organization.name) + assertEquals(null, organization.externalId) + assertEquals(null, organization.metadata) assertEquals(data["organizationDomainId"], organization.domains[0].id) } @@ -528,6 +601,8 @@ class OrganizationsApiTest : TestBase() { assertEquals(data["organizationId"], organization.id) assertEquals(data["organizationDomainName"], organization.name) + assertEquals(null, organization.externalId) + assertEquals(null, organization.metadata) assertEquals(data["organizationDomainId"], organization.domains[0].id) } @@ -573,6 +648,8 @@ class OrganizationsApiTest : TestBase() { assertEquals(data["organizationId"], organization.id) assertEquals(data["organizationDomainName"], organization.name) + assertEquals(null, organization.externalId) + assertEquals(null, organization.metadata) assertEquals(data["organizationDomainId"], organization.domains[0].id) } @@ -600,6 +677,7 @@ class OrganizationsApiTest : TestBase() { assertEquals(data["organizationId"], organization.id) assertEquals(data["organizationDomainName"], organization.name) + assertEquals(null, organization.externalId) assertEquals(data["organizationDomainId"], organization.domains[0].id) } diff --git a/src/test/kotlin/com/workos/test/user_management/UserManagementApiTest.kt b/src/test/kotlin/com/workos/test/user_management/UserManagementApiTest.kt index 7bd2cd69..1723c9c9 100644 --- a/src/test/kotlin/com/workos/test/user_management/UserManagementApiTest.kt +++ b/src/test/kotlin/com/workos/test/user_management/UserManagementApiTest.kt @@ -52,6 +52,8 @@ class UserManagementApiTest : TestBase() { "profile_picture_url": "https://example.com/profile_picture.jpg", "first_name": "Test", "last_name": "User", + "external_id": null, + "metadata": null, "last_sign_in_at": "2021-06-25T19:07:33.155Z", "created_at": "2021-06-25T19:07:33.155Z", "updated_at": "2021-06-25T19:07:33.155Z" @@ -66,6 +68,50 @@ class UserManagementApiTest : TestBase() { "test01@example.com", "Test", "User", + null, + null, + true, + "https://example.com/profile_picture.jpg", + "2021-06-25T19:07:33.155Z", + "2021-06-25T19:07:33.155Z", + "2021-06-25T19:07:33.155Z" + ), + user + ) + assertEquals(null, user.externalId) + assertEquals(null, user.metadata) + } + + @Test + fun getUserByExternalIdShouldReturnValidUserObject() { + stubResponse( + "/user_management/users/external_id/ext_123", + """{ + "object": "user", + "id": "user_123", + "email": "test01@example.com", + "email_verified": true, + "profile_picture_url": "https://example.com/profile_picture.jpg", + "first_name": "Test", + "last_name": "User", + "external_id": "ext_123", + "metadata": null, + "last_sign_in_at": "2021-06-25T19:07:33.155Z", + "created_at": "2021-06-25T19:07:33.155Z", + "updated_at": "2021-06-25T19:07:33.155Z" + }""" + ) + + val user = workos.userManagement.getUserByExternalId("ext_123") + + assertEquals( + User( + "user_123", + "test01@example.com", + "Test", + "User", + "ext_123", + null, true, "https://example.com/profile_picture.jpg", "2021-06-25T19:07:33.155Z", @@ -74,6 +120,8 @@ class UserManagementApiTest : TestBase() { ), user ) + assertEquals("ext_123", user.externalId) + assertEquals(null, user.metadata) } @Test @@ -86,6 +134,8 @@ class UserManagementApiTest : TestBase() { "object": "user", "id": "user_123", "email": "test01@example.com", + "external_id": null, + "metadata": null, "last_sign_in_at": "2021-06-25T19:07:33.155Z", "created_at": "2021-06-25T19:07:33.155Z", "updated_at": "2021-06-25T19:07:33.155Z" @@ -106,6 +156,8 @@ class UserManagementApiTest : TestBase() { "test01@example.com", null, null, + null, + null, false, null, "2021-06-25T19:07:33.155Z", @@ -127,6 +179,8 @@ class UserManagementApiTest : TestBase() { "object": "user", "id": "user_123", "email": "test01@example.com", + "external_id": null, + "metadata": null, "last_sign_in_at": "2021-06-25T19:07:33.155Z", "created_at": "2021-06-25T19:07:33.155Z", "updated_at": "2021-06-25T19:07:33.155Z" @@ -157,6 +211,8 @@ class UserManagementApiTest : TestBase() { "test01@example.com", null, null, + null, + null, false, null, "2021-06-25T19:07:33.155Z", @@ -180,6 +236,8 @@ class UserManagementApiTest : TestBase() { "profile_picture_url": null, "first_name": "Test", "last_name": "User", + "external_id": null, + "metadata": null, "last_sign_in_at": "2021-06-25T19:07:33.155Z", "created_at": "2021-06-25T19:07:33.155Z", "updated_at": "2021-06-25T19:07:33.155Z" @@ -210,6 +268,8 @@ class UserManagementApiTest : TestBase() { "test01@example.com", "Test", "User", + null, + null, true, null, "2021-06-25T19:07:33.155Z", @@ -232,6 +292,8 @@ class UserManagementApiTest : TestBase() { "profile_picture_url": null, "first_name": "Test", "last_name": "User", + "external_id": null, + "metadata": null, "last_sign_in_at": "2021-06-25T19:07:33.155Z", "created_at": "2021-06-25T19:07:33.155Z", "updated_at": "2021-06-25T19:07:33.155Z" @@ -262,6 +324,8 @@ class UserManagementApiTest : TestBase() { "test01@example.com", "Test", "User", + null, + null, true, null, "2021-06-25T19:07:33.155Z", @@ -1142,6 +1206,8 @@ class UserManagementApiTest : TestBase() { "profile_picture_url": null, "first_name": "Test", "last_name": "User", + "external_id": null, + "metadata": null, "last_sign_in_at": "2021-06-25T19:07:33.155Z", "created_at": "2021-06-25T19:07:33.155Z", "updated_at": "2021-06-25T19:07:33.155Z" @@ -1161,6 +1227,8 @@ class UserManagementApiTest : TestBase() { "test01@example.com", "Test", "User", + null, + null, true, null, "2021-06-25T19:07:33.155Z",