From 3625982401735eea9a3e3878d40a91795ff1f601 Mon Sep 17 00:00:00 2001 From: Haris Chaniotakis Date: Tue, 8 Apr 2025 12:53:34 +0300 Subject: [PATCH] feat(backend,clerk-js,types): Expose 'external_account.phone_number' property We expose the new 'phone_number' property of external accounts. This represents the corresponding phone number of the external account if present --- .changeset/breezy-mirrors-think.md | 7 +++++++ packages/backend/src/api/resources/ExternalAccount.ts | 2 ++ packages/backend/src/api/resources/JSON.ts | 1 + packages/backend/src/fixtures/user.json | 1 + packages/clerk-js/src/core/resources/ExternalAccount.ts | 3 +++ packages/clerk-js/src/core/test/fixtures.ts | 1 + packages/types/src/externalAccount.ts | 1 + packages/types/src/json.ts | 1 + 8 files changed, 17 insertions(+) create mode 100644 .changeset/breezy-mirrors-think.md diff --git a/.changeset/breezy-mirrors-think.md b/.changeset/breezy-mirrors-think.md new file mode 100644 index 00000000000..fb4461c8d80 --- /dev/null +++ b/.changeset/breezy-mirrors-think.md @@ -0,0 +1,7 @@ +--- +'@clerk/clerk-js': patch +'@clerk/backend': patch +'@clerk/types': patch +--- + +Expose the 'external_account.phone_number' property. This represents the associated phone number, if exists, with the specific external account diff --git a/packages/backend/src/api/resources/ExternalAccount.ts b/packages/backend/src/api/resources/ExternalAccount.ts index 4281685a08c..6bf6e08ec6c 100644 --- a/packages/backend/src/api/resources/ExternalAccount.ts +++ b/packages/backend/src/api/resources/ExternalAccount.ts @@ -13,6 +13,7 @@ export class ExternalAccount { readonly lastName: string, readonly imageUrl: string, readonly username: string | null, + readonly phoneNumber: string | null, readonly publicMetadata: Record | null = {}, readonly label: string | null, readonly verification: Verification | null, @@ -30,6 +31,7 @@ export class ExternalAccount { data.last_name, data.image_url || '', data.username, + data.phone_number, data.public_metadata, data.label, data.verification && Verification.fromJSON(data.verification), diff --git a/packages/backend/src/api/resources/JSON.ts b/packages/backend/src/api/resources/JSON.ts index b4730cfd920..5ad5f0cc078 100644 --- a/packages/backend/src/api/resources/JSON.ts +++ b/packages/backend/src/api/resources/JSON.ts @@ -120,6 +120,7 @@ export interface ExternalAccountJSON extends ClerkResourceJSON { last_name: string; image_url?: string; username: string | null; + phone_number: string | null; public_metadata?: Record | null; label: string | null; verification: VerificationJSON | null; diff --git a/packages/backend/src/fixtures/user.json b/packages/backend/src/fixtures/user.json index b56ac92804e..e6f1f0c4b0e 100644 --- a/packages/backend/src/fixtures/user.json +++ b/packages/backend/src/fixtures/user.json @@ -83,6 +83,7 @@ "last_name": "Doe", "avatar_url": "https://clerk.com/test.jpg", "username": "jdoe", + "phone_number": "+306900000000", "public_metadata": {}, "label": null, "verification": null, diff --git a/packages/clerk-js/src/core/resources/ExternalAccount.ts b/packages/clerk-js/src/core/resources/ExternalAccount.ts index eb40c0f49c5..22d3d1a8a2c 100644 --- a/packages/clerk-js/src/core/resources/ExternalAccount.ts +++ b/packages/clerk-js/src/core/resources/ExternalAccount.ts @@ -22,6 +22,7 @@ export class ExternalAccount extends BaseResource implements ExternalAccountReso lastName = ''; imageUrl = ''; username = ''; + phoneNumber = ''; publicMetadata = {}; label = ''; verification: VerificationResource | null = null; @@ -59,6 +60,7 @@ export class ExternalAccount extends BaseResource implements ExternalAccountReso // TODO: Send the provider name the `oauth` prefix from FAPI this.provider = (data.provider || '').replace('oauth_', '') as OAuthProvider; this.username = data.username; + this.phoneNumber = data.phone_number; this.publicMetadata = data.public_metadata; this.label = data.label; @@ -81,6 +83,7 @@ export class ExternalAccount extends BaseResource implements ExternalAccountReso last_name: this.lastName, image_url: this.imageUrl, username: this.username, + phone_number: this.phoneNumber, public_metadata: this.publicMetadata, label: this.label, verification: this.verification?.__internal_toSnapshot() || null, diff --git a/packages/clerk-js/src/core/test/fixtures.ts b/packages/clerk-js/src/core/test/fixtures.ts index 6feeae180a3..e8fc4d7bd06 100644 --- a/packages/clerk-js/src/core/test/fixtures.ts +++ b/packages/clerk-js/src/core/test/fixtures.ts @@ -118,6 +118,7 @@ export const createExternalAccount = (params?: Partial): Ex last_name: 'Last name', image_url: '', username: '', + phoneNumber: '', verification: { status: 'verified', strategy: '', diff --git a/packages/types/src/externalAccount.ts b/packages/types/src/externalAccount.ts index 6f30d3f8e75..0fc499afbfd 100644 --- a/packages/types/src/externalAccount.ts +++ b/packages/types/src/externalAccount.ts @@ -21,6 +21,7 @@ export interface ExternalAccountResource extends ClerkResource { lastName: string; imageUrl: string; username?: string; + phoneNumber?: string; publicMetadata: Record; label?: string; verification: VerificationResource | null; diff --git a/packages/types/src/json.ts b/packages/types/src/json.ts index 8b9e7b941c9..2e49afde77c 100644 --- a/packages/types/src/json.ts +++ b/packages/types/src/json.ts @@ -196,6 +196,7 @@ export interface ExternalAccountJSON extends ClerkResourceJSON { last_name: string; image_url: string; username: string; + phone_number: string; public_metadata: Record; label: string; verification?: VerificationJSON;