|
2 | 2 | from urllib.parse import urlencode |
3 | 3 | from workos._client_configuration import ClientConfiguration |
4 | 4 | from workos.session import AsyncSession, Session |
| 5 | +from workos.types.feature_flags import FeatureFlag |
| 6 | +from workos.types.feature_flags.list_filters import FeatureFlagListFilters |
5 | 7 | from workos.types.list_resource import ( |
6 | 8 | ListArgs, |
7 | 9 | ListMetadata, |
|
97 | 99 | INVITATION_RESEND_PATH = "user_management/invitations/{0}/resend" |
98 | 100 | PASSWORD_RESET_PATH = "user_management/password_reset" |
99 | 101 | PASSWORD_RESET_DETAIL_PATH = "user_management/password_reset/{0}" |
| 102 | +USER_FEATURE_FLAGS_PATH = "user_management/users/{0}/feature-flags" |
100 | 103 |
|
101 | 104 |
|
102 | 105 | UsersListResource = WorkOSListResource[User, UsersListFilters, ListMetadata] |
|
113 | 116 | Invitation, InvitationsListFilters, ListMetadata |
114 | 117 | ] |
115 | 118 |
|
| 119 | +FeatureFlagsListResource = WorkOSListResource[ |
| 120 | + FeatureFlag, FeatureFlagListFilters, ListMetadata |
| 121 | +] |
| 122 | + |
116 | 123 | from workos.types.user_management.list_filters import SessionsListFilters |
117 | 124 |
|
118 | 125 | SessionsListResource = WorkOSListResource[ |
@@ -908,6 +915,29 @@ def resend_invitation(self, invitation_id: str) -> SyncOrAsync[Invitation]: |
908 | 915 | """ |
909 | 916 | ... |
910 | 917 |
|
| 918 | + def list_feature_flags( |
| 919 | + self, |
| 920 | + user_id: str, |
| 921 | + *, |
| 922 | + limit: int = DEFAULT_LIST_RESPONSE_LIMIT, |
| 923 | + before: Optional[str] = None, |
| 924 | + after: Optional[str] = None, |
| 925 | + order: PaginationOrder = "desc", |
| 926 | + ) -> SyncOrAsync[FeatureFlagsListResource]: |
| 927 | + """Retrieve a list of feature flags for a user |
| 928 | +
|
| 929 | + Args: |
| 930 | + user_id (str): User's unique identifier |
| 931 | + limit (int): Maximum number of records to return. (Optional) |
| 932 | + before (str): Pagination cursor to receive records before a provided Feature Flag ID. (Optional) |
| 933 | + after (str): Pagination cursor to receive records after a provided Feature Flag ID. (Optional) |
| 934 | + order (Literal["asc","desc"]): Sort records in either ascending or descending (default) order by created_at timestamp. (Optional) |
| 935 | +
|
| 936 | + Returns: |
| 937 | + FeatureFlagsListResource: Feature flags list response from WorkOS. |
| 938 | + """ |
| 939 | + ... |
| 940 | + |
911 | 941 |
|
912 | 942 | class UserManagement(UserManagementModule): |
913 | 943 | _http_client: SyncHTTPClient |
@@ -1603,6 +1633,34 @@ def resend_invitation(self, invitation_id: str) -> Invitation: |
1603 | 1633 |
|
1604 | 1634 | return Invitation.model_validate(response) |
1605 | 1635 |
|
| 1636 | + def list_feature_flags( |
| 1637 | + self, |
| 1638 | + user_id: str, |
| 1639 | + *, |
| 1640 | + limit: int = DEFAULT_LIST_RESPONSE_LIMIT, |
| 1641 | + before: Optional[str] = None, |
| 1642 | + after: Optional[str] = None, |
| 1643 | + order: PaginationOrder = "desc", |
| 1644 | + ) -> FeatureFlagsListResource: |
| 1645 | + list_params: FeatureFlagListFilters = { |
| 1646 | + "limit": limit, |
| 1647 | + "before": before, |
| 1648 | + "after": after, |
| 1649 | + "order": order, |
| 1650 | + } |
| 1651 | + |
| 1652 | + response = self._http_client.request( |
| 1653 | + USER_FEATURE_FLAGS_PATH.format(user_id), |
| 1654 | + method=REQUEST_METHOD_GET, |
| 1655 | + params=list_params, |
| 1656 | + ) |
| 1657 | + |
| 1658 | + return FeatureFlagsListResource( |
| 1659 | + list_method=self.list_feature_flags, |
| 1660 | + list_args=list_params, |
| 1661 | + **ListPage[FeatureFlag](**response).model_dump(), |
| 1662 | + ) |
| 1663 | + |
1606 | 1664 |
|
1607 | 1665 | class AsyncUserManagement(UserManagementModule): |
1608 | 1666 | _http_client: AsyncHTTPClient |
@@ -2312,3 +2370,31 @@ async def resend_invitation(self, invitation_id: str) -> Invitation: |
2312 | 2370 | ) |
2313 | 2371 |
|
2314 | 2372 | return Invitation.model_validate(response) |
| 2373 | + |
| 2374 | + async def list_feature_flags( |
| 2375 | + self, |
| 2376 | + user_id: str, |
| 2377 | + *, |
| 2378 | + limit: int = DEFAULT_LIST_RESPONSE_LIMIT, |
| 2379 | + before: Optional[str] = None, |
| 2380 | + after: Optional[str] = None, |
| 2381 | + order: PaginationOrder = "desc", |
| 2382 | + ) -> FeatureFlagsListResource: |
| 2383 | + list_params: FeatureFlagListFilters = { |
| 2384 | + "limit": limit, |
| 2385 | + "before": before, |
| 2386 | + "after": after, |
| 2387 | + "order": order, |
| 2388 | + } |
| 2389 | + |
| 2390 | + response = await self._http_client.request( |
| 2391 | + USER_FEATURE_FLAGS_PATH.format(user_id), |
| 2392 | + method=REQUEST_METHOD_GET, |
| 2393 | + params=list_params, |
| 2394 | + ) |
| 2395 | + |
| 2396 | + return FeatureFlagsListResource( |
| 2397 | + list_method=self.list_feature_flags, |
| 2398 | + list_args=list_params, |
| 2399 | + **ListPage[FeatureFlag](**response).model_dump(), |
| 2400 | + ) |
0 commit comments