|
13 | 13 | from workos.types.authorization.organization_role import OrganizationRole |
14 | 14 | from workos.types.authorization.permission import Permission |
15 | 15 | from workos.types.authorization.resource import Resource |
| 16 | +from workos.types.authorization.resource_identifier import ParentResourceIdentifier |
16 | 17 | from workos.types.authorization.role import Role, RoleList |
17 | 18 | from workos.types.list_resource import ( |
18 | 19 | ListArgs, |
@@ -48,9 +49,7 @@ class PermissionListFilters(ListArgs, total=False): |
48 | 49 |
|
49 | 50 | class ResourcesForMembershipListFilters(ListArgs, total=False): |
50 | 51 | permission_slug: str |
51 | | - parent_resource_id: Optional[str] |
52 | | - parent_resource_type_slug: Optional[str] |
53 | | - parent_resource_external_id: Optional[str] |
| 52 | + parent_resource: ParentResourceIdentifier |
54 | 53 |
|
55 | 54 |
|
56 | 55 | ResourcesForMembershipListResource = WorkOSListResource[ |
@@ -197,9 +196,7 @@ def list_resources_for_membership( |
197 | 196 | organization_membership_id: str, |
198 | 197 | *, |
199 | 198 | permission_slug: str, |
200 | | - parent_resource_id: Optional[str] = None, |
201 | | - parent_resource_type_slug: Optional[str] = None, |
202 | | - parent_resource_external_id: Optional[str] = None, |
| 199 | + parent_resource: ParentResourceIdentifier, |
203 | 200 | limit: int = DEFAULT_LIST_RESPONSE_LIMIT, |
204 | 201 | before: Optional[str] = None, |
205 | 202 | after: Optional[str] = None, |
@@ -515,47 +512,30 @@ def list_resources_for_membership( |
515 | 512 | organization_membership_id: str, |
516 | 513 | *, |
517 | 514 | permission_slug: str, |
518 | | - parent_resource_id: Optional[str] = None, |
519 | | - parent_resource_type_slug: Optional[str] = None, |
520 | | - parent_resource_external_id: Optional[str] = None, |
| 515 | + parent_resource: ParentResourceIdentifier, |
521 | 516 | limit: int = DEFAULT_LIST_RESPONSE_LIMIT, |
522 | 517 | before: Optional[str] = None, |
523 | 518 | after: Optional[str] = None, |
524 | 519 | order: PaginationOrder = "desc", |
525 | 520 | ) -> ResourcesForMembershipListResource: |
526 | | - if parent_resource_id is not None and ( |
527 | | - parent_resource_type_slug is not None |
528 | | - or parent_resource_external_id is not None |
529 | | - ): |
530 | | - raise ValueError( |
531 | | - "Cannot specify both parent_resource_id and " |
532 | | - "parent_resource_type_slug/parent_resource_external_id. " |
533 | | - "Use one identification method." |
534 | | - ) |
535 | | - if (parent_resource_type_slug is None) != (parent_resource_external_id is None): |
536 | | - raise ValueError( |
537 | | - "parent_resource_type_slug and parent_resource_external_id " |
538 | | - "must be provided together." |
539 | | - ) |
540 | | - |
541 | 521 | list_params: ResourcesForMembershipListFilters = { |
542 | 522 | "limit": limit, |
543 | 523 | "before": before, |
544 | 524 | "after": after, |
545 | 525 | "order": order, |
546 | 526 | "permission_slug": permission_slug, |
| 527 | + "parent_resource": parent_resource, |
| 528 | + } |
| 529 | + |
| 530 | + http_params: Dict[str, Any] = { |
| 531 | + k: v for k, v in list_params.items() if k != "parent_resource" |
547 | 532 | } |
548 | | - if parent_resource_id is not None: |
549 | | - list_params["parent_resource_id"] = parent_resource_id |
550 | | - if parent_resource_type_slug is not None: |
551 | | - list_params["parent_resource_type_slug"] = parent_resource_type_slug |
552 | | - if parent_resource_external_id is not None: |
553 | | - list_params["parent_resource_external_id"] = parent_resource_external_id |
| 533 | + http_params.update(parent_resource) |
554 | 534 |
|
555 | 535 | response = self._http_client.request( |
556 | 536 | f"authorization/organization_memberships/{organization_membership_id}/resources", |
557 | 537 | method=REQUEST_METHOD_GET, |
558 | | - params=list_params, |
| 538 | + params=http_params, |
559 | 539 | ) |
560 | 540 |
|
561 | 541 | return WorkOSListResource[ |
@@ -932,47 +912,30 @@ async def list_resources_for_membership( |
932 | 912 | organization_membership_id: str, |
933 | 913 | *, |
934 | 914 | permission_slug: str, |
935 | | - parent_resource_id: Optional[str] = None, |
936 | | - parent_resource_type_slug: Optional[str] = None, |
937 | | - parent_resource_external_id: Optional[str] = None, |
| 915 | + parent_resource: ParentResourceIdentifier, |
938 | 916 | limit: int = DEFAULT_LIST_RESPONSE_LIMIT, |
939 | 917 | before: Optional[str] = None, |
940 | 918 | after: Optional[str] = None, |
941 | 919 | order: PaginationOrder = "desc", |
942 | 920 | ) -> ResourcesForMembershipListResource: |
943 | | - if parent_resource_id is not None and ( |
944 | | - parent_resource_type_slug is not None |
945 | | - or parent_resource_external_id is not None |
946 | | - ): |
947 | | - raise ValueError( |
948 | | - "Cannot specify both parent_resource_id and " |
949 | | - "parent_resource_type_slug/parent_resource_external_id. " |
950 | | - "Use one identification method." |
951 | | - ) |
952 | | - if (parent_resource_type_slug is None) != (parent_resource_external_id is None): |
953 | | - raise ValueError( |
954 | | - "parent_resource_type_slug and parent_resource_external_id " |
955 | | - "must be provided together." |
956 | | - ) |
957 | | - |
958 | 921 | list_params: ResourcesForMembershipListFilters = { |
959 | 922 | "limit": limit, |
960 | 923 | "before": before, |
961 | 924 | "after": after, |
962 | 925 | "order": order, |
963 | 926 | "permission_slug": permission_slug, |
| 927 | + "parent_resource": parent_resource, |
| 928 | + } |
| 929 | + |
| 930 | + http_params: Dict[str, Any] = { |
| 931 | + k: v for k, v in list_params.items() if k != "parent_resource" |
964 | 932 | } |
965 | | - if parent_resource_id is not None: |
966 | | - list_params["parent_resource_id"] = parent_resource_id |
967 | | - if parent_resource_type_slug is not None: |
968 | | - list_params["parent_resource_type_slug"] = parent_resource_type_slug |
969 | | - if parent_resource_external_id is not None: |
970 | | - list_params["parent_resource_external_id"] = parent_resource_external_id |
| 933 | + http_params.update(parent_resource) |
971 | 934 |
|
972 | 935 | response = await self._http_client.request( |
973 | 936 | f"authorization/organization_memberships/{organization_membership_id}/resources", |
974 | 937 | method=REQUEST_METHOD_GET, |
975 | | - params=list_params, |
| 938 | + params=http_params, |
976 | 939 | ) |
977 | 940 |
|
978 | 941 | return WorkOSListResource[ |
|
0 commit comments