|
30 | 30 |
|
31 | 31 | AUTHORIZATION_PERMISSIONS_PATH = "authorization/permissions" |
32 | 32 | AUTHORIZATION_ORGANIZATIONS_PATH = "authorization/organizations" |
| 33 | +AUTHORIZATION_RESOURCES_PATH = "authorization/resources" |
33 | 34 |
|
34 | 35 |
|
35 | 36 | class ResourceListFilters(ListArgs, total=False): |
36 | | - organization_id: str |
| 37 | + organization_id: Optional[str] |
37 | 38 | resource_type_slug: Optional[str] |
| 39 | + parent_resource_id: Optional[str] |
| 40 | + parent_resource_type_slug: Optional[str] |
| 41 | + parent_external_id: Optional[str] |
| 42 | + search: Optional[str] |
38 | 43 |
|
39 | 44 |
|
40 | 45 | ResourcesListResource = WorkOSListResource[Resource, ResourceListFilters, ListMetadata] |
@@ -201,9 +206,13 @@ def delete_resource_by_external_id( |
201 | 206 |
|
202 | 207 | def list_resources( |
203 | 208 | self, |
204 | | - organization_id: str, |
205 | 209 | *, |
| 210 | + organization_id: Optional[str] = None, |
206 | 211 | resource_type_slug: Optional[str] = None, |
| 212 | + parent_resource_id: Optional[str] = None, |
| 213 | + parent_resource_type_slug: Optional[str] = None, |
| 214 | + parent_external_id: Optional[str] = None, |
| 215 | + search: Optional[str] = None, |
207 | 216 | limit: int = DEFAULT_LIST_RESPONSE_LIMIT, |
208 | 217 | before: Optional[str] = None, |
209 | 218 | after: Optional[str] = None, |
@@ -545,30 +554,41 @@ def delete_resource_by_external_id( |
545 | 554 |
|
546 | 555 | def list_resources( |
547 | 556 | self, |
548 | | - organization_id: str, |
549 | 557 | *, |
| 558 | + organization_id: Optional[str] = None, |
550 | 559 | resource_type_slug: Optional[str] = None, |
| 560 | + parent_resource_id: Optional[str] = None, |
| 561 | + parent_resource_type_slug: Optional[str] = None, |
| 562 | + parent_external_id: Optional[str] = None, |
| 563 | + search: Optional[str] = None, |
551 | 564 | limit: int = DEFAULT_LIST_RESPONSE_LIMIT, |
552 | 565 | before: Optional[str] = None, |
553 | 566 | after: Optional[str] = None, |
554 | 567 | order: PaginationOrder = "desc", |
555 | 568 | ) -> ResourcesListResource: |
556 | 569 | list_params: ResourceListFilters = { |
557 | | - "organization_id": organization_id, |
558 | 570 | "limit": limit, |
559 | 571 | "before": before, |
560 | 572 | "after": after, |
561 | 573 | "order": order, |
562 | 574 | } |
| 575 | + if organization_id is not None: |
| 576 | + list_params["organization_id"] = organization_id |
563 | 577 | if resource_type_slug is not None: |
564 | 578 | list_params["resource_type_slug"] = resource_type_slug |
565 | | - |
566 | | - query_params = {k: v for k, v in list_params.items() if k != "organization_id"} |
| 579 | + if parent_resource_id is not None: |
| 580 | + list_params["parent_resource_id"] = parent_resource_id |
| 581 | + if parent_resource_type_slug is not None: |
| 582 | + list_params["parent_resource_type_slug"] = parent_resource_type_slug |
| 583 | + if parent_external_id is not None: |
| 584 | + list_params["parent_external_id"] = parent_external_id |
| 585 | + if search is not None: |
| 586 | + list_params["search"] = search |
567 | 587 |
|
568 | 588 | response = self._http_client.request( |
569 | | - f"{AUTHORIZATION_ORGANIZATIONS_PATH}/{organization_id}/resources", |
| 589 | + AUTHORIZATION_RESOURCES_PATH, |
570 | 590 | method=REQUEST_METHOD_GET, |
571 | | - params=query_params, |
| 591 | + params=list_params, |
572 | 592 | ) |
573 | 593 |
|
574 | 594 | return WorkOSListResource[Resource, ResourceListFilters, ListMetadata]( |
@@ -912,30 +932,41 @@ async def delete_resource_by_external_id( |
912 | 932 |
|
913 | 933 | async def list_resources( |
914 | 934 | self, |
915 | | - organization_id: str, |
916 | 935 | *, |
| 936 | + organization_id: Optional[str] = None, |
917 | 937 | resource_type_slug: Optional[str] = None, |
| 938 | + parent_resource_id: Optional[str] = None, |
| 939 | + parent_resource_type_slug: Optional[str] = None, |
| 940 | + parent_external_id: Optional[str] = None, |
| 941 | + search: Optional[str] = None, |
918 | 942 | limit: int = DEFAULT_LIST_RESPONSE_LIMIT, |
919 | 943 | before: Optional[str] = None, |
920 | 944 | after: Optional[str] = None, |
921 | 945 | order: PaginationOrder = "desc", |
922 | 946 | ) -> ResourcesListResource: |
923 | 947 | list_params: ResourceListFilters = { |
924 | | - "organization_id": organization_id, |
925 | 948 | "limit": limit, |
926 | 949 | "before": before, |
927 | 950 | "after": after, |
928 | 951 | "order": order, |
929 | 952 | } |
| 953 | + if organization_id is not None: |
| 954 | + list_params["organization_id"] = organization_id |
930 | 955 | if resource_type_slug is not None: |
931 | 956 | list_params["resource_type_slug"] = resource_type_slug |
932 | | - |
933 | | - query_params = {k: v for k, v in list_params.items() if k != "organization_id"} |
| 957 | + if parent_resource_id is not None: |
| 958 | + list_params["parent_resource_id"] = parent_resource_id |
| 959 | + if parent_resource_type_slug is not None: |
| 960 | + list_params["parent_resource_type_slug"] = parent_resource_type_slug |
| 961 | + if parent_external_id is not None: |
| 962 | + list_params["parent_external_id"] = parent_external_id |
| 963 | + if search is not None: |
| 964 | + list_params["search"] = search |
934 | 965 |
|
935 | 966 | response = await self._http_client.request( |
936 | | - f"{AUTHORIZATION_ORGANIZATIONS_PATH}/{organization_id}/resources", |
| 967 | + AUTHORIZATION_RESOURCES_PATH, |
937 | 968 | method=REQUEST_METHOD_GET, |
938 | | - params=query_params, |
| 969 | + params=list_params, |
939 | 970 | ) |
940 | 971 |
|
941 | 972 | return WorkOSListResource[Resource, ResourceListFilters, ListMetadata]( |
|
0 commit comments