Skip to content

Commit 4fee98e

Browse files
committed
Add external id and metadata to user update and create
1 parent 310ad09 commit 4fee98e

File tree

4 files changed

+31
-4
lines changed

4 files changed

+31
-4
lines changed

workos/types/metadata.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
from typing import Dict
2+
3+
4+
type Metadata = Dict[str, str]
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from dataclasses import field
2-
from typing import Optional, Sequence, Dict
2+
from typing import Optional, Sequence
3+
from workos.types.metadata import Metadata
34
from workos.types.organizations.organization_common import OrganizationCommon
45
from workos.types.organizations.organization_domain import OrganizationDomain
56

@@ -9,4 +10,4 @@ class Organization(OrganizationCommon):
910
domains: Sequence[OrganizationDomain]
1011
stripe_customer_id: Optional[str] = None
1112
external_id: Optional[str] = None
12-
metadata: Dict[str, str] = field(default_factory=dict)
13+
metadata: Metadata = field(default_factory=dict)

workos/types/user_management/user.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from dataclasses import field
2-
from typing import Literal, Optional, Dict
2+
from typing import Literal, Optional
3+
from workos.types.metadata import Metadata
34
from workos.types.workos_model import WorkOSModel
45

56

@@ -17,4 +18,4 @@ class User(WorkOSModel):
1718
created_at: str
1819
updated_at: str
1920
external_id: Optional[str] = None
20-
metadata: Dict[str, str] = field(default_factory=dict)
21+
metadata: Metadata = field(default_factory=dict)

workos/user_management.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
ListPage,
99
WorkOSListResource,
1010
)
11+
from workos.types.metadata import Metadata
1112
from workos.types.mfa import (
1213
AuthenticationFactor,
1314
AuthenticationFactorTotpAndChallengeResponse,
@@ -183,6 +184,8 @@ def create_user(
183184
first_name: Optional[str] = None,
184185
last_name: Optional[str] = None,
185186
email_verified: Optional[bool] = None,
187+
external_id: Optional[str] = None,
188+
metadata: Optional[Metadata] = None,
186189
) -> SyncOrAsync[User]:
187190
"""Create a new user.
188191
@@ -210,6 +213,8 @@ def update_user(
210213
password: Optional[str] = None,
211214
password_hash: Optional[str] = None,
212215
password_hash_type: Optional[PasswordHashType] = None,
216+
external_id: Optional[str] = None,
217+
metadata: Optional[Metadata] = None,
213218
) -> SyncOrAsync[User]:
214219
"""Update user attributes.
215220
@@ -917,6 +922,8 @@ def create_user(
917922
first_name: Optional[str] = None,
918923
last_name: Optional[str] = None,
919924
email_verified: Optional[bool] = None,
925+
external_id: Optional[str] = None,
926+
metadata: Optional[Metadata] = None,
920927
) -> User:
921928
json = {
922929
"email": email,
@@ -926,6 +933,8 @@ def create_user(
926933
"first_name": first_name,
927934
"last_name": last_name,
928935
"email_verified": email_verified or False,
936+
"external_id": external_id,
937+
"metadata": metadata,
929938
}
930939

931940
response = self._http_client.request(
@@ -944,6 +953,8 @@ def update_user(
944953
password: Optional[str] = None,
945954
password_hash: Optional[str] = None,
946955
password_hash_type: Optional[PasswordHashType] = None,
956+
external_id: Optional[str] = None,
957+
metadata: Optional[Metadata] = None,
947958
) -> User:
948959
json = {
949960
"first_name": first_name,
@@ -952,6 +963,8 @@ def update_user(
952963
"password": password,
953964
"password_hash": password_hash,
954965
"password_hash_type": password_hash_type,
966+
"external_id": external_id,
967+
"metadata": metadata,
955968
}
956969

957970
response = self._http_client.request(
@@ -1529,6 +1542,8 @@ async def create_user(
15291542
first_name: Optional[str] = None,
15301543
last_name: Optional[str] = None,
15311544
email_verified: Optional[bool] = None,
1545+
external_id: Optional[str] = None,
1546+
metadata: Optional[Metadata] = None,
15321547
) -> User:
15331548
json = {
15341549
"email": email,
@@ -1538,6 +1553,8 @@ async def create_user(
15381553
"first_name": first_name,
15391554
"last_name": last_name,
15401555
"email_verified": email_verified or False,
1556+
"external_id": external_id,
1557+
"metadata": metadata,
15411558
}
15421559

15431560
response = await self._http_client.request(
@@ -1556,6 +1573,8 @@ async def update_user(
15561573
password: Optional[str] = None,
15571574
password_hash: Optional[str] = None,
15581575
password_hash_type: Optional[PasswordHashType] = None,
1576+
external_id: Optional[str] = None,
1577+
metadata: Optional[Metadata] = None,
15591578
) -> User:
15601579
json = {
15611580
"first_name": first_name,
@@ -1564,6 +1583,8 @@ async def update_user(
15641583
"password": password,
15651584
"password_hash": password_hash,
15661585
"password_hash_type": password_hash_type,
1586+
"external_id": external_id,
1587+
"metadata": metadata,
15671588
}
15681589

15691590
response = await self._http_client.request(

0 commit comments

Comments
 (0)