|
1 | 1 | from typing import Optional, Protocol, Sequence |
2 | 2 |
|
| 3 | +from workos.types.feature_flags import FeatureFlag |
| 4 | +from workos.types.feature_flags.list_filters import FeatureFlagListFilters |
3 | 5 | from workos.types.metadata import Metadata |
4 | 6 | from workos.types.organizations.domain_data_input import DomainDataInput |
5 | 7 | from workos.types.organizations.list_filters import OrganizationListFilters |
|
24 | 26 | Organization, OrganizationListFilters, ListMetadata |
25 | 27 | ] |
26 | 28 |
|
| 29 | +FeatureFlagsListResource = WorkOSListResource[ |
| 30 | + FeatureFlag, FeatureFlagListFilters, ListMetadata |
| 31 | +] |
| 32 | + |
27 | 33 |
|
28 | 34 | class OrganizationsModule(Protocol): |
29 | 35 | """Offers methods through the WorkOS Organizations service.""" |
@@ -128,6 +134,29 @@ def delete_organization(self, organization_id: str) -> SyncOrAsync[None]: |
128 | 134 | """ |
129 | 135 | ... |
130 | 136 |
|
| 137 | + def list_feature_flags( |
| 138 | + self, |
| 139 | + organization_id: str, |
| 140 | + *, |
| 141 | + limit: int = DEFAULT_LIST_RESPONSE_LIMIT, |
| 142 | + before: Optional[str] = None, |
| 143 | + after: Optional[str] = None, |
| 144 | + order: PaginationOrder = "desc", |
| 145 | + ) -> SyncOrAsync[FeatureFlagsListResource]: |
| 146 | + """Retrieve a list of feature flags for an organization |
| 147 | +
|
| 148 | + Args: |
| 149 | + organization_id (str): Organization's unique identifier |
| 150 | + limit (int): Maximum number of records to return. (Optional) |
| 151 | + before (str): Pagination cursor to receive records before a provided Feature Flag ID. (Optional) |
| 152 | + after (str): Pagination cursor to receive records after a provided Feature Flag ID. (Optional) |
| 153 | + order (Literal["asc","desc"]): Sort records in either ascending or descending (default) order by created_at timestamp. (Optional) |
| 154 | +
|
| 155 | + Returns: |
| 156 | + FeatureFlagsListResource: Feature flags list response from WorkOS. |
| 157 | + """ |
| 158 | + ... |
| 159 | + |
131 | 160 |
|
132 | 161 | class Organizations(OrganizationsModule): |
133 | 162 | _http_client: SyncHTTPClient |
@@ -247,6 +276,34 @@ def list_organization_roles(self, organization_id: str) -> RoleList: |
247 | 276 |
|
248 | 277 | return RoleList.model_validate(response) |
249 | 278 |
|
| 279 | + def list_feature_flags( |
| 280 | + self, |
| 281 | + organization_id: str, |
| 282 | + *, |
| 283 | + limit: int = DEFAULT_LIST_RESPONSE_LIMIT, |
| 284 | + before: Optional[str] = None, |
| 285 | + after: Optional[str] = None, |
| 286 | + order: PaginationOrder = "desc", |
| 287 | + ) -> FeatureFlagsListResource: |
| 288 | + list_params: FeatureFlagListFilters = { |
| 289 | + "limit": limit, |
| 290 | + "before": before, |
| 291 | + "after": after, |
| 292 | + "order": order, |
| 293 | + } |
| 294 | + |
| 295 | + response = self._http_client.request( |
| 296 | + f"organizations/{organization_id}/feature-flags", |
| 297 | + method=REQUEST_METHOD_GET, |
| 298 | + params=list_params, |
| 299 | + ) |
| 300 | + |
| 301 | + return WorkOSListResource[FeatureFlag, FeatureFlagListFilters, ListMetadata]( |
| 302 | + list_method=self.list_feature_flags, |
| 303 | + list_args=list_params, |
| 304 | + **ListPage[FeatureFlag](**response).model_dump(), |
| 305 | + ) |
| 306 | + |
250 | 307 |
|
251 | 308 | class AsyncOrganizations(OrganizationsModule): |
252 | 309 | _http_client: AsyncHTTPClient |
@@ -365,3 +422,31 @@ async def list_organization_roles(self, organization_id: str) -> RoleList: |
365 | 422 | ) |
366 | 423 |
|
367 | 424 | return RoleList.model_validate(response) |
| 425 | + |
| 426 | + async def list_feature_flags( |
| 427 | + self, |
| 428 | + organization_id: str, |
| 429 | + *, |
| 430 | + limit: int = DEFAULT_LIST_RESPONSE_LIMIT, |
| 431 | + before: Optional[str] = None, |
| 432 | + after: Optional[str] = None, |
| 433 | + order: PaginationOrder = "desc", |
| 434 | + ) -> FeatureFlagsListResource: |
| 435 | + list_params: FeatureFlagListFilters = { |
| 436 | + "limit": limit, |
| 437 | + "before": before, |
| 438 | + "after": after, |
| 439 | + "order": order, |
| 440 | + } |
| 441 | + |
| 442 | + response = await self._http_client.request( |
| 443 | + f"organizations/{organization_id}/feature-flags", |
| 444 | + method=REQUEST_METHOD_GET, |
| 445 | + params=list_params, |
| 446 | + ) |
| 447 | + |
| 448 | + return WorkOSListResource[FeatureFlag, FeatureFlagListFilters, ListMetadata]( |
| 449 | + list_method=self.list_feature_flags, |
| 450 | + list_args=list_params, |
| 451 | + **ListPage[FeatureFlag](**response).model_dump(), |
| 452 | + ) |
0 commit comments