diff --git a/api.md b/api.md
index db446942c0c..e26b4e9da35 100644
--- a/api.md
+++ b/api.md
@@ -10,12 +10,14 @@ from cloudflare.types import (
ErrorData,
Identifier,
LoadBalancerPreview,
+ Member,
PaginationInfo,
Permission,
PermissionGrant,
RatePlan,
ResponseInfo,
Result,
+ Role,
SortDirection,
Subscription,
SubscriptionComponent,
@@ -44,36 +46,23 @@ Methods:
Types:
```python
-from cloudflare.types.accounts import (
- Status,
- MemberCreateResponse,
- MemberUpdateResponse,
- MemberListResponse,
- MemberDeleteResponse,
- MemberGetResponse,
-)
+from cloudflare.types.accounts import Status, MemberDeleteResponse
```
Methods:
-- client.accounts.members.create(\*, account_id, \*\*params) -> Optional
-- client.accounts.members.update(member_id, \*, account_id, \*\*params) -> Optional
-- client.accounts.members.list(\*, account_id, \*\*params) -> SyncV4PagePaginationArray[MemberListResponse]
+- client.accounts.members.create(\*, account_id, \*\*params) -> Optional
+- client.accounts.members.update(member_id, \*, account_id, \*\*params) -> Optional
+- client.accounts.members.list(\*, account_id, \*\*params) -> SyncV4PagePaginationArray[Member]
- client.accounts.members.delete(member_id, \*, account_id) -> Optional
-- client.accounts.members.get(member_id, \*, account_id) -> Optional
+- client.accounts.members.get(member_id, \*, account_id) -> Optional
## Roles
-Types:
-
-```python
-from cloudflare.types.accounts import RoleListResponse, RoleGetResponse
-```
-
Methods:
-- client.accounts.roles.list(\*, account_id) -> SyncSinglePage[RoleListResponse]
-- client.accounts.roles.get(role_id, \*, account_id) -> Optional
+- client.accounts.roles.list(\*, account_id) -> SyncSinglePage[Role]
+- client.accounts.roles.get(role_id, \*, account_id) -> Optional
## Subscriptions
diff --git a/src/cloudflare/resources/accounts/members.py b/src/cloudflare/resources/accounts/members.py
index 4eeb2856485..ed54745beb2 100644
--- a/src/cloudflare/resources/accounts/members.py
+++ b/src/cloudflare/resources/accounts/members.py
@@ -25,11 +25,9 @@
from ...pagination import SyncV4PagePaginationArray, AsyncV4PagePaginationArray
from ..._base_client import AsyncPaginator, make_request_options
from ...types.accounts import member_list_params, member_create_params, member_update_params
-from ...types.accounts.member_get_response import MemberGetResponse
-from ...types.accounts.member_list_response import MemberListResponse
-from ...types.accounts.member_create_response import MemberCreateResponse
+from ...types.shared.member import Member
+from ...types.shared_params.role import Role
from ...types.accounts.member_delete_response import MemberDeleteResponse
-from ...types.accounts.member_update_response import MemberUpdateResponse
__all__ = ["MembersResource", "AsyncMembersResource"]
@@ -68,7 +66,7 @@ def create(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberCreateResponse]:
+ ) -> Optional[Member]:
"""
Add a user to the list of members for this account.
@@ -103,7 +101,7 @@ def create(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberCreateResponse]:
+ ) -> Optional[Member]:
"""
Add a user to the list of members for this account.
@@ -139,7 +137,7 @@ def create(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberCreateResponse]:
+ ) -> Optional[Member]:
if not account_id:
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
return self._post(
@@ -158,9 +156,9 @@ def create(
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
- post_parser=ResultWrapper[Optional[MemberCreateResponse]]._unwrapper,
+ post_parser=ResultWrapper[Optional[Member]]._unwrapper,
),
- cast_to=cast(Type[Optional[MemberCreateResponse]], ResultWrapper[MemberCreateResponse]),
+ cast_to=cast(Type[Optional[Member]], ResultWrapper[Member]),
)
@overload
@@ -169,14 +167,14 @@ def update(
member_id: str,
*,
account_id: str,
- roles: Iterable[member_update_params.IAMUpdateMemberWithRolesRole] | NotGiven = NOT_GIVEN,
+ roles: Iterable[Role] | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberUpdateResponse]:
+ ) -> Optional[Member]:
"""
Modify an account member.
@@ -210,7 +208,7 @@ def update(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberUpdateResponse]:
+ ) -> Optional[Member]:
"""
Modify an account member.
@@ -237,7 +235,7 @@ def update(
member_id: str,
*,
account_id: str,
- roles: Iterable[member_update_params.IAMUpdateMemberWithRolesRole] | NotGiven = NOT_GIVEN,
+ roles: Iterable[Role] | NotGiven = NOT_GIVEN,
policies: Iterable[member_update_params.IAMUpdateMemberWithPoliciesPolicy] | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
@@ -245,7 +243,7 @@ def update(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberUpdateResponse]:
+ ) -> Optional[Member]:
if not account_id:
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
if not member_id:
@@ -264,9 +262,9 @@ def update(
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
- post_parser=ResultWrapper[Optional[MemberUpdateResponse]]._unwrapper,
+ post_parser=ResultWrapper[Optional[Member]]._unwrapper,
),
- cast_to=cast(Type[Optional[MemberUpdateResponse]], ResultWrapper[MemberUpdateResponse]),
+ cast_to=cast(Type[Optional[Member]], ResultWrapper[Member]),
)
def list(
@@ -284,7 +282,7 @@ def list(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> SyncV4PagePaginationArray[MemberListResponse]:
+ ) -> SyncV4PagePaginationArray[Member]:
"""
List all members of an account.
@@ -313,7 +311,7 @@ def list(
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
return self._get_api_list(
f"/accounts/{account_id}/members",
- page=SyncV4PagePaginationArray[MemberListResponse],
+ page=SyncV4PagePaginationArray[Member],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -330,7 +328,7 @@ def list(
member_list_params.MemberListParams,
),
),
- model=MemberListResponse,
+ model=Member,
)
def delete(
@@ -388,7 +386,7 @@ def get(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberGetResponse]:
+ ) -> Optional[Member]:
"""
Get information about a specific member of an account.
@@ -416,9 +414,9 @@ def get(
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
- post_parser=ResultWrapper[Optional[MemberGetResponse]]._unwrapper,
+ post_parser=ResultWrapper[Optional[Member]]._unwrapper,
),
- cast_to=cast(Type[Optional[MemberGetResponse]], ResultWrapper[MemberGetResponse]),
+ cast_to=cast(Type[Optional[Member]], ResultWrapper[Member]),
)
@@ -456,7 +454,7 @@ async def create(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberCreateResponse]:
+ ) -> Optional[Member]:
"""
Add a user to the list of members for this account.
@@ -491,7 +489,7 @@ async def create(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberCreateResponse]:
+ ) -> Optional[Member]:
"""
Add a user to the list of members for this account.
@@ -527,7 +525,7 @@ async def create(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberCreateResponse]:
+ ) -> Optional[Member]:
if not account_id:
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
return await self._post(
@@ -546,9 +544,9 @@ async def create(
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
- post_parser=ResultWrapper[Optional[MemberCreateResponse]]._unwrapper,
+ post_parser=ResultWrapper[Optional[Member]]._unwrapper,
),
- cast_to=cast(Type[Optional[MemberCreateResponse]], ResultWrapper[MemberCreateResponse]),
+ cast_to=cast(Type[Optional[Member]], ResultWrapper[Member]),
)
@overload
@@ -557,14 +555,14 @@ async def update(
member_id: str,
*,
account_id: str,
- roles: Iterable[member_update_params.IAMUpdateMemberWithRolesRole] | NotGiven = NOT_GIVEN,
+ roles: Iterable[Role] | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberUpdateResponse]:
+ ) -> Optional[Member]:
"""
Modify an account member.
@@ -598,7 +596,7 @@ async def update(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberUpdateResponse]:
+ ) -> Optional[Member]:
"""
Modify an account member.
@@ -625,7 +623,7 @@ async def update(
member_id: str,
*,
account_id: str,
- roles: Iterable[member_update_params.IAMUpdateMemberWithRolesRole] | NotGiven = NOT_GIVEN,
+ roles: Iterable[Role] | NotGiven = NOT_GIVEN,
policies: Iterable[member_update_params.IAMUpdateMemberWithPoliciesPolicy] | NotGiven = NOT_GIVEN,
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
# The extra values given here take precedence over values defined on the client or passed to this method.
@@ -633,7 +631,7 @@ async def update(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberUpdateResponse]:
+ ) -> Optional[Member]:
if not account_id:
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
if not member_id:
@@ -652,9 +650,9 @@ async def update(
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
- post_parser=ResultWrapper[Optional[MemberUpdateResponse]]._unwrapper,
+ post_parser=ResultWrapper[Optional[Member]]._unwrapper,
),
- cast_to=cast(Type[Optional[MemberUpdateResponse]], ResultWrapper[MemberUpdateResponse]),
+ cast_to=cast(Type[Optional[Member]], ResultWrapper[Member]),
)
def list(
@@ -672,7 +670,7 @@ def list(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> AsyncPaginator[MemberListResponse, AsyncV4PagePaginationArray[MemberListResponse]]:
+ ) -> AsyncPaginator[Member, AsyncV4PagePaginationArray[Member]]:
"""
List all members of an account.
@@ -701,7 +699,7 @@ def list(
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
return self._get_api_list(
f"/accounts/{account_id}/members",
- page=AsyncV4PagePaginationArray[MemberListResponse],
+ page=AsyncV4PagePaginationArray[Member],
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -718,7 +716,7 @@ def list(
member_list_params.MemberListParams,
),
),
- model=MemberListResponse,
+ model=Member,
)
async def delete(
@@ -776,7 +774,7 @@ async def get(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[MemberGetResponse]:
+ ) -> Optional[Member]:
"""
Get information about a specific member of an account.
@@ -804,9 +802,9 @@ async def get(
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
- post_parser=ResultWrapper[Optional[MemberGetResponse]]._unwrapper,
+ post_parser=ResultWrapper[Optional[Member]]._unwrapper,
),
- cast_to=cast(Type[Optional[MemberGetResponse]], ResultWrapper[MemberGetResponse]),
+ cast_to=cast(Type[Optional[Member]], ResultWrapper[Member]),
)
diff --git a/src/cloudflare/resources/accounts/roles.py b/src/cloudflare/resources/accounts/roles.py
index 22520e505d0..1fcaa9c487c 100644
--- a/src/cloudflare/resources/accounts/roles.py
+++ b/src/cloudflare/resources/accounts/roles.py
@@ -18,8 +18,7 @@
from ..._wrappers import ResultWrapper
from ...pagination import SyncSinglePage, AsyncSinglePage
from ..._base_client import AsyncPaginator, make_request_options
-from ...types.accounts.role_get_response import RoleGetResponse
-from ...types.accounts.role_list_response import RoleListResponse
+from ...types.shared.role import Role
__all__ = ["RolesResource", "AsyncRolesResource"]
@@ -54,7 +53,7 @@ def list(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> SyncSinglePage[RoleListResponse]:
+ ) -> SyncSinglePage[Role]:
"""
Get all available roles for an account.
@@ -73,11 +72,11 @@ def list(
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
return self._get_api_list(
f"/accounts/{account_id}/roles",
- page=SyncSinglePage[RoleListResponse],
+ page=SyncSinglePage[Role],
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- model=RoleListResponse,
+ model=Role,
)
def get(
@@ -91,7 +90,7 @@ def get(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[RoleGetResponse]:
+ ) -> Optional[Role]:
"""
Get information about a specific role for an account.
@@ -119,9 +118,9 @@ def get(
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
- post_parser=ResultWrapper[Optional[RoleGetResponse]]._unwrapper,
+ post_parser=ResultWrapper[Optional[Role]]._unwrapper,
),
- cast_to=cast(Type[Optional[RoleGetResponse]], ResultWrapper[RoleGetResponse]),
+ cast_to=cast(Type[Optional[Role]], ResultWrapper[Role]),
)
@@ -155,7 +154,7 @@ def list(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> AsyncPaginator[RoleListResponse, AsyncSinglePage[RoleListResponse]]:
+ ) -> AsyncPaginator[Role, AsyncSinglePage[Role]]:
"""
Get all available roles for an account.
@@ -174,11 +173,11 @@ def list(
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
return self._get_api_list(
f"/accounts/{account_id}/roles",
- page=AsyncSinglePage[RoleListResponse],
+ page=AsyncSinglePage[Role],
options=make_request_options(
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
),
- model=RoleListResponse,
+ model=Role,
)
async def get(
@@ -192,7 +191,7 @@ async def get(
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
- ) -> Optional[RoleGetResponse]:
+ ) -> Optional[Role]:
"""
Get information about a specific role for an account.
@@ -220,9 +219,9 @@ async def get(
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
- post_parser=ResultWrapper[Optional[RoleGetResponse]]._unwrapper,
+ post_parser=ResultWrapper[Optional[Role]]._unwrapper,
),
- cast_to=cast(Type[Optional[RoleGetResponse]], ResultWrapper[RoleGetResponse]),
+ cast_to=cast(Type[Optional[Role]], ResultWrapper[Role]),
)
diff --git a/src/cloudflare/types/__init__.py b/src/cloudflare/types/__init__.py
index 3b9c7703182..a241fecb148 100644
--- a/src/cloudflare/types/__init__.py
+++ b/src/cloudflare/types/__init__.py
@@ -4,6 +4,8 @@
from .shared import (
ASN as ASN,
+ Role as Role,
+ Member as Member,
Result as Result,
AuditLog as AuditLog,
RatePlan as RatePlan,
diff --git a/src/cloudflare/types/accounts/__init__.py b/src/cloudflare/types/accounts/__init__.py
index 62cafadbd86..af56c08969a 100644
--- a/src/cloudflare/types/accounts/__init__.py
+++ b/src/cloudflare/types/accounts/__init__.py
@@ -4,18 +4,14 @@
from .status import Status as Status
from .account import Account as Account
-from .role_get_response import RoleGetResponse as RoleGetResponse
from .token_list_params import TokenListParams as TokenListParams
from .member_list_params import MemberListParams as MemberListParams
-from .role_list_response import RoleListResponse as RoleListResponse
from .token_get_response import TokenGetResponse as TokenGetResponse
from .account_list_params import AccountListParams as AccountListParams
-from .member_get_response import MemberGetResponse as MemberGetResponse
from .token_create_params import TokenCreateParams as TokenCreateParams
from .token_list_response import TokenListResponse as TokenListResponse
from .token_update_params import TokenUpdateParams as TokenUpdateParams
from .member_create_params import MemberCreateParams as MemberCreateParams
-from .member_list_response import MemberListResponse as MemberListResponse
from .member_update_params import MemberUpdateParams as MemberUpdateParams
from .account_create_params import AccountCreateParams as AccountCreateParams
from .account_update_params import AccountUpdateParams as AccountUpdateParams
@@ -23,9 +19,7 @@
from .token_delete_response import TokenDeleteResponse as TokenDeleteResponse
from .token_update_response import TokenUpdateResponse as TokenUpdateResponse
from .token_verify_response import TokenVerifyResponse as TokenVerifyResponse
-from .member_create_response import MemberCreateResponse as MemberCreateResponse
from .member_delete_response import MemberDeleteResponse as MemberDeleteResponse
-from .member_update_response import MemberUpdateResponse as MemberUpdateResponse
from .account_delete_response import AccountDeleteResponse as AccountDeleteResponse
from .subscription_get_response import SubscriptionGetResponse as SubscriptionGetResponse
from .subscription_create_params import SubscriptionCreateParams as SubscriptionCreateParams
diff --git a/src/cloudflare/types/accounts/member_create_response.py b/src/cloudflare/types/accounts/member_create_response.py
deleted file mode 100644
index b2417c2ca3f..00000000000
--- a/src/cloudflare/types/accounts/member_create_response.py
+++ /dev/null
@@ -1,167 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing import List, Optional
-from typing_extensions import Literal
-
-from ..._models import BaseModel
-from ..shared.permission_grant import PermissionGrant
-
-__all__ = [
- "MemberCreateResponse",
- "Policy",
- "PolicyPermissionGroup",
- "PolicyPermissionGroupMeta",
- "PolicyResourceGroup",
- "PolicyResourceGroupScope",
- "PolicyResourceGroupScopeObject",
- "PolicyResourceGroupMeta",
- "Role",
- "RolePermissions",
- "User",
-]
-
-
-class PolicyPermissionGroupMeta(BaseModel):
- key: Optional[str] = None
-
- value: Optional[str] = None
-
-
-class PolicyPermissionGroup(BaseModel):
- id: str
- """Identifier of the group."""
-
- meta: Optional[PolicyPermissionGroupMeta] = None
- """Attributes associated to the permission group."""
-
- name: Optional[str] = None
- """Name of the group."""
-
-
-class PolicyResourceGroupScopeObject(BaseModel):
- key: str
- """
- This is a combination of pre-defined resource name and identifier (like Zone ID
- etc.)
- """
-
-
-class PolicyResourceGroupScope(BaseModel):
- key: str
- """
- This is a combination of pre-defined resource name and identifier (like Account
- ID etc.)
- """
-
- objects: List[PolicyResourceGroupScopeObject]
- """A list of scope objects for additional context."""
-
-
-class PolicyResourceGroupMeta(BaseModel):
- key: Optional[str] = None
-
- value: Optional[str] = None
-
-
-class PolicyResourceGroup(BaseModel):
- id: str
- """Identifier of the group."""
-
- scope: List[PolicyResourceGroupScope]
- """The scope associated to the resource group"""
-
- meta: Optional[PolicyResourceGroupMeta] = None
- """Attributes associated to the resource group."""
-
- name: Optional[str] = None
- """Name of the resource group."""
-
-
-class Policy(BaseModel):
- id: Optional[str] = None
- """Policy identifier."""
-
- access: Optional[Literal["allow", "deny"]] = None
- """Allow or deny operations against the resources."""
-
- permission_groups: Optional[List[PolicyPermissionGroup]] = None
- """A set of permission groups that are specified to the policy."""
-
- resource_groups: Optional[List[PolicyResourceGroup]] = None
- """A list of resource groups that the policy applies to."""
-
-
-class RolePermissions(BaseModel):
- analytics: Optional[PermissionGrant] = None
-
- billing: Optional[PermissionGrant] = None
-
- cache_purge: Optional[PermissionGrant] = None
-
- dns: Optional[PermissionGrant] = None
-
- dns_records: Optional[PermissionGrant] = None
-
- lb: Optional[PermissionGrant] = None
-
- logs: Optional[PermissionGrant] = None
-
- organization: Optional[PermissionGrant] = None
-
- ssl: Optional[PermissionGrant] = None
-
- waf: Optional[PermissionGrant] = None
-
- zone_settings: Optional[PermissionGrant] = None
-
- zones: Optional[PermissionGrant] = None
-
-
-class Role(BaseModel):
- id: str
- """Role identifier tag."""
-
- description: str
- """Description of role's permissions."""
-
- name: str
- """Role name."""
-
- permissions: RolePermissions
-
-
-class User(BaseModel):
- email: str
- """The contact email address of the user."""
-
- id: Optional[str] = None
- """Identifier"""
-
- first_name: Optional[str] = None
- """User's first name"""
-
- last_name: Optional[str] = None
- """User's last name"""
-
- two_factor_authentication_enabled: Optional[bool] = None
- """Indicates whether two-factor authentication is enabled for the user account.
-
- Does not apply to API authentication.
- """
-
-
-class MemberCreateResponse(BaseModel):
- id: Optional[str] = None
- """Membership identifier tag."""
-
- policies: Optional[List[Policy]] = None
- """Access policy for the membership"""
-
- roles: Optional[List[Role]] = None
- """Roles assigned to this Member."""
-
- status: Optional[Literal["accepted", "pending"]] = None
- """A member's status in the account."""
-
- user: Optional[User] = None
- """Details of the user associated to the membership."""
diff --git a/src/cloudflare/types/accounts/member_list_response.py b/src/cloudflare/types/accounts/member_list_response.py
deleted file mode 100644
index afc8a984763..00000000000
--- a/src/cloudflare/types/accounts/member_list_response.py
+++ /dev/null
@@ -1,167 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing import List, Optional
-from typing_extensions import Literal
-
-from ..._models import BaseModel
-from ..shared.permission_grant import PermissionGrant
-
-__all__ = [
- "MemberListResponse",
- "Policy",
- "PolicyPermissionGroup",
- "PolicyPermissionGroupMeta",
- "PolicyResourceGroup",
- "PolicyResourceGroupScope",
- "PolicyResourceGroupScopeObject",
- "PolicyResourceGroupMeta",
- "Role",
- "RolePermissions",
- "User",
-]
-
-
-class PolicyPermissionGroupMeta(BaseModel):
- key: Optional[str] = None
-
- value: Optional[str] = None
-
-
-class PolicyPermissionGroup(BaseModel):
- id: str
- """Identifier of the group."""
-
- meta: Optional[PolicyPermissionGroupMeta] = None
- """Attributes associated to the permission group."""
-
- name: Optional[str] = None
- """Name of the group."""
-
-
-class PolicyResourceGroupScopeObject(BaseModel):
- key: str
- """
- This is a combination of pre-defined resource name and identifier (like Zone ID
- etc.)
- """
-
-
-class PolicyResourceGroupScope(BaseModel):
- key: str
- """
- This is a combination of pre-defined resource name and identifier (like Account
- ID etc.)
- """
-
- objects: List[PolicyResourceGroupScopeObject]
- """A list of scope objects for additional context."""
-
-
-class PolicyResourceGroupMeta(BaseModel):
- key: Optional[str] = None
-
- value: Optional[str] = None
-
-
-class PolicyResourceGroup(BaseModel):
- id: str
- """Identifier of the group."""
-
- scope: List[PolicyResourceGroupScope]
- """The scope associated to the resource group"""
-
- meta: Optional[PolicyResourceGroupMeta] = None
- """Attributes associated to the resource group."""
-
- name: Optional[str] = None
- """Name of the resource group."""
-
-
-class Policy(BaseModel):
- id: Optional[str] = None
- """Policy identifier."""
-
- access: Optional[Literal["allow", "deny"]] = None
- """Allow or deny operations against the resources."""
-
- permission_groups: Optional[List[PolicyPermissionGroup]] = None
- """A set of permission groups that are specified to the policy."""
-
- resource_groups: Optional[List[PolicyResourceGroup]] = None
- """A list of resource groups that the policy applies to."""
-
-
-class RolePermissions(BaseModel):
- analytics: Optional[PermissionGrant] = None
-
- billing: Optional[PermissionGrant] = None
-
- cache_purge: Optional[PermissionGrant] = None
-
- dns: Optional[PermissionGrant] = None
-
- dns_records: Optional[PermissionGrant] = None
-
- lb: Optional[PermissionGrant] = None
-
- logs: Optional[PermissionGrant] = None
-
- organization: Optional[PermissionGrant] = None
-
- ssl: Optional[PermissionGrant] = None
-
- waf: Optional[PermissionGrant] = None
-
- zone_settings: Optional[PermissionGrant] = None
-
- zones: Optional[PermissionGrant] = None
-
-
-class Role(BaseModel):
- id: str
- """Role identifier tag."""
-
- description: str
- """Description of role's permissions."""
-
- name: str
- """Role name."""
-
- permissions: RolePermissions
-
-
-class User(BaseModel):
- email: str
- """The contact email address of the user."""
-
- id: Optional[str] = None
- """Identifier"""
-
- first_name: Optional[str] = None
- """User's first name"""
-
- last_name: Optional[str] = None
- """User's last name"""
-
- two_factor_authentication_enabled: Optional[bool] = None
- """Indicates whether two-factor authentication is enabled for the user account.
-
- Does not apply to API authentication.
- """
-
-
-class MemberListResponse(BaseModel):
- id: Optional[str] = None
- """Membership identifier tag."""
-
- policies: Optional[List[Policy]] = None
- """Access policy for the membership"""
-
- roles: Optional[List[Role]] = None
- """Roles assigned to this Member."""
-
- status: Optional[Literal["accepted", "pending"]] = None
- """A member's status in the account."""
-
- user: Optional[User] = None
- """Details of the user associated to the membership."""
diff --git a/src/cloudflare/types/accounts/member_update_params.py b/src/cloudflare/types/accounts/member_update_params.py
index 92c4624483c..8993a363573 100644
--- a/src/cloudflare/types/accounts/member_update_params.py
+++ b/src/cloudflare/types/accounts/member_update_params.py
@@ -5,10 +5,11 @@
from typing import Union, Iterable
from typing_extensions import Literal, Required, TypeAlias, TypedDict
+from ..shared_params.role import Role
+
__all__ = [
"MemberUpdateParams",
"IAMUpdateMemberWithRoles",
- "IAMUpdateMemberWithRolesRole",
"IAMUpdateMemberWithPolicies",
"IAMUpdateMemberWithPoliciesPolicy",
"IAMUpdateMemberWithPoliciesPolicyPermissionGroup",
@@ -20,15 +21,10 @@ class IAMUpdateMemberWithRoles(TypedDict, total=False):
account_id: Required[str]
"""Account identifier tag."""
- roles: Iterable[IAMUpdateMemberWithRolesRole]
+ roles: Iterable[Role]
"""Roles assigned to this member."""
-class IAMUpdateMemberWithRolesRole(TypedDict, total=False):
- id: Required[str]
- """Role identifier tag."""
-
-
class IAMUpdateMemberWithPolicies(TypedDict, total=False):
account_id: Required[str]
"""Account identifier tag."""
diff --git a/src/cloudflare/types/accounts/member_update_response.py b/src/cloudflare/types/accounts/member_update_response.py
deleted file mode 100644
index fce9bcf0ea1..00000000000
--- a/src/cloudflare/types/accounts/member_update_response.py
+++ /dev/null
@@ -1,167 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing import List, Optional
-from typing_extensions import Literal
-
-from ..._models import BaseModel
-from ..shared.permission_grant import PermissionGrant
-
-__all__ = [
- "MemberUpdateResponse",
- "Policy",
- "PolicyPermissionGroup",
- "PolicyPermissionGroupMeta",
- "PolicyResourceGroup",
- "PolicyResourceGroupScope",
- "PolicyResourceGroupScopeObject",
- "PolicyResourceGroupMeta",
- "Role",
- "RolePermissions",
- "User",
-]
-
-
-class PolicyPermissionGroupMeta(BaseModel):
- key: Optional[str] = None
-
- value: Optional[str] = None
-
-
-class PolicyPermissionGroup(BaseModel):
- id: str
- """Identifier of the group."""
-
- meta: Optional[PolicyPermissionGroupMeta] = None
- """Attributes associated to the permission group."""
-
- name: Optional[str] = None
- """Name of the group."""
-
-
-class PolicyResourceGroupScopeObject(BaseModel):
- key: str
- """
- This is a combination of pre-defined resource name and identifier (like Zone ID
- etc.)
- """
-
-
-class PolicyResourceGroupScope(BaseModel):
- key: str
- """
- This is a combination of pre-defined resource name and identifier (like Account
- ID etc.)
- """
-
- objects: List[PolicyResourceGroupScopeObject]
- """A list of scope objects for additional context."""
-
-
-class PolicyResourceGroupMeta(BaseModel):
- key: Optional[str] = None
-
- value: Optional[str] = None
-
-
-class PolicyResourceGroup(BaseModel):
- id: str
- """Identifier of the group."""
-
- scope: List[PolicyResourceGroupScope]
- """The scope associated to the resource group"""
-
- meta: Optional[PolicyResourceGroupMeta] = None
- """Attributes associated to the resource group."""
-
- name: Optional[str] = None
- """Name of the resource group."""
-
-
-class Policy(BaseModel):
- id: Optional[str] = None
- """Policy identifier."""
-
- access: Optional[Literal["allow", "deny"]] = None
- """Allow or deny operations against the resources."""
-
- permission_groups: Optional[List[PolicyPermissionGroup]] = None
- """A set of permission groups that are specified to the policy."""
-
- resource_groups: Optional[List[PolicyResourceGroup]] = None
- """A list of resource groups that the policy applies to."""
-
-
-class RolePermissions(BaseModel):
- analytics: Optional[PermissionGrant] = None
-
- billing: Optional[PermissionGrant] = None
-
- cache_purge: Optional[PermissionGrant] = None
-
- dns: Optional[PermissionGrant] = None
-
- dns_records: Optional[PermissionGrant] = None
-
- lb: Optional[PermissionGrant] = None
-
- logs: Optional[PermissionGrant] = None
-
- organization: Optional[PermissionGrant] = None
-
- ssl: Optional[PermissionGrant] = None
-
- waf: Optional[PermissionGrant] = None
-
- zone_settings: Optional[PermissionGrant] = None
-
- zones: Optional[PermissionGrant] = None
-
-
-class Role(BaseModel):
- id: str
- """Role identifier tag."""
-
- description: str
- """Description of role's permissions."""
-
- name: str
- """Role name."""
-
- permissions: RolePermissions
-
-
-class User(BaseModel):
- email: str
- """The contact email address of the user."""
-
- id: Optional[str] = None
- """Identifier"""
-
- first_name: Optional[str] = None
- """User's first name"""
-
- last_name: Optional[str] = None
- """User's last name"""
-
- two_factor_authentication_enabled: Optional[bool] = None
- """Indicates whether two-factor authentication is enabled for the user account.
-
- Does not apply to API authentication.
- """
-
-
-class MemberUpdateResponse(BaseModel):
- id: Optional[str] = None
- """Membership identifier tag."""
-
- policies: Optional[List[Policy]] = None
- """Access policy for the membership"""
-
- roles: Optional[List[Role]] = None
- """Roles assigned to this Member."""
-
- status: Optional[Literal["accepted", "pending"]] = None
- """A member's status in the account."""
-
- user: Optional[User] = None
- """Details of the user associated to the membership."""
diff --git a/src/cloudflare/types/accounts/role_list_response.py b/src/cloudflare/types/accounts/role_list_response.py
deleted file mode 100644
index a33e125a638..00000000000
--- a/src/cloudflare/types/accounts/role_list_response.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
-
-from typing import Optional
-
-from ..._models import BaseModel
-from ..shared.permission_grant import PermissionGrant
-
-__all__ = ["RoleListResponse", "Permissions"]
-
-
-class Permissions(BaseModel):
- analytics: Optional[PermissionGrant] = None
-
- billing: Optional[PermissionGrant] = None
-
- cache_purge: Optional[PermissionGrant] = None
-
- dns: Optional[PermissionGrant] = None
-
- dns_records: Optional[PermissionGrant] = None
-
- lb: Optional[PermissionGrant] = None
-
- logs: Optional[PermissionGrant] = None
-
- organization: Optional[PermissionGrant] = None
-
- ssl: Optional[PermissionGrant] = None
-
- waf: Optional[PermissionGrant] = None
-
- zone_settings: Optional[PermissionGrant] = None
-
- zones: Optional[PermissionGrant] = None
-
-
-class RoleListResponse(BaseModel):
- id: str
- """Role identifier tag."""
-
- description: str
- """Description of role's permissions."""
-
- name: str
- """Role name."""
-
- permissions: Permissions
diff --git a/src/cloudflare/types/shared/__init__.py b/src/cloudflare/types/shared/__init__.py
index ed081cf82aa..6610a90e94f 100644
--- a/src/cloudflare/types/shared/__init__.py
+++ b/src/cloudflare/types/shared/__init__.py
@@ -1,6 +1,8 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
from .asn import ASN as ASN
+from .role import Role as Role
+from .member import Member as Member
from .result import Result as Result
from .audit_log import AuditLog as AuditLog
from .rate_plan import RatePlan as RatePlan
diff --git a/src/cloudflare/types/accounts/member_get_response.py b/src/cloudflare/types/shared/member.py
similarity index 76%
rename from src/cloudflare/types/accounts/member_get_response.py
rename to src/cloudflare/types/shared/member.py
index 83e2665af49..5391a7acbb1 100644
--- a/src/cloudflare/types/accounts/member_get_response.py
+++ b/src/cloudflare/types/shared/member.py
@@ -3,11 +3,11 @@
from typing import List, Optional
from typing_extensions import Literal
+from .role import Role
from ..._models import BaseModel
-from ..shared.permission_grant import PermissionGrant
__all__ = [
- "MemberGetResponse",
+ "Member",
"Policy",
"PolicyPermissionGroup",
"PolicyPermissionGroupMeta",
@@ -15,8 +15,6 @@
"PolicyResourceGroupScope",
"PolicyResourceGroupScopeObject",
"PolicyResourceGroupMeta",
- "Role",
- "RolePermissions",
"User",
]
@@ -91,45 +89,6 @@ class Policy(BaseModel):
"""A list of resource groups that the policy applies to."""
-class RolePermissions(BaseModel):
- analytics: Optional[PermissionGrant] = None
-
- billing: Optional[PermissionGrant] = None
-
- cache_purge: Optional[PermissionGrant] = None
-
- dns: Optional[PermissionGrant] = None
-
- dns_records: Optional[PermissionGrant] = None
-
- lb: Optional[PermissionGrant] = None
-
- logs: Optional[PermissionGrant] = None
-
- organization: Optional[PermissionGrant] = None
-
- ssl: Optional[PermissionGrant] = None
-
- waf: Optional[PermissionGrant] = None
-
- zone_settings: Optional[PermissionGrant] = None
-
- zones: Optional[PermissionGrant] = None
-
-
-class Role(BaseModel):
- id: str
- """Role identifier tag."""
-
- description: str
- """Description of role's permissions."""
-
- name: str
- """Role name."""
-
- permissions: RolePermissions
-
-
class User(BaseModel):
email: str
"""The contact email address of the user."""
@@ -150,7 +109,7 @@ class User(BaseModel):
"""
-class MemberGetResponse(BaseModel):
+class Member(BaseModel):
id: Optional[str] = None
"""Membership identifier tag."""
diff --git a/src/cloudflare/types/accounts/role_get_response.py b/src/cloudflare/types/shared/role.py
similarity index 87%
rename from src/cloudflare/types/accounts/role_get_response.py
rename to src/cloudflare/types/shared/role.py
index 71af9eff87a..24ee969f825 100644
--- a/src/cloudflare/types/accounts/role_get_response.py
+++ b/src/cloudflare/types/shared/role.py
@@ -3,9 +3,9 @@
from typing import Optional
from ..._models import BaseModel
-from ..shared.permission_grant import PermissionGrant
+from .permission_grant import PermissionGrant
-__all__ = ["RoleGetResponse", "Permissions"]
+__all__ = ["Role", "Permissions"]
class Permissions(BaseModel):
@@ -34,7 +34,7 @@ class Permissions(BaseModel):
zones: Optional[PermissionGrant] = None
-class RoleGetResponse(BaseModel):
+class Role(BaseModel):
id: str
"""Role identifier tag."""
diff --git a/src/cloudflare/types/shared_params/__init__.py b/src/cloudflare/types/shared_params/__init__.py
index 66613c1bc7b..420bb6540f2 100644
--- a/src/cloudflare/types/shared_params/__init__.py
+++ b/src/cloudflare/types/shared_params/__init__.py
@@ -1,6 +1,7 @@
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
from .asn import ASN as ASN
+from .role import Role as Role
from .rate_plan import RatePlan as RatePlan
from .certificate_ca import CertificateCA as CertificateCA
from .sort_direction import SortDirection as SortDirection
diff --git a/src/cloudflare/types/shared_params/role.py b/src/cloudflare/types/shared_params/role.py
new file mode 100644
index 00000000000..87cc37b52b8
--- /dev/null
+++ b/src/cloudflare/types/shared_params/role.py
@@ -0,0 +1,12 @@
+# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
+
+from __future__ import annotations
+
+from typing_extensions import Required, TypedDict
+
+__all__ = ["Role"]
+
+
+class Role(TypedDict, total=False):
+ id: Required[str]
+ """Role identifier tag."""
diff --git a/tests/api_resources/accounts/test_members.py b/tests/api_resources/accounts/test_members.py
index b411cad9979..45da05c5186 100644
--- a/tests/api_resources/accounts/test_members.py
+++ b/tests/api_resources/accounts/test_members.py
@@ -10,12 +10,9 @@
from cloudflare import Cloudflare, AsyncCloudflare
from tests.utils import assert_matches_type
from cloudflare.pagination import SyncV4PagePaginationArray, AsyncV4PagePaginationArray
+from cloudflare.types.shared import Member
from cloudflare.types.accounts import (
- MemberGetResponse,
- MemberListResponse,
- MemberCreateResponse,
MemberDeleteResponse,
- MemberUpdateResponse,
)
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -36,7 +33,7 @@ def test_method_create_overload_1(self, client: Cloudflare) -> None:
"3536bcfad5faccb999b47003c79917fb",
],
)
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -51,7 +48,7 @@ def test_method_create_with_all_params_overload_1(self, client: Cloudflare) -> N
],
status="accepted",
)
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -69,7 +66,7 @@ def test_raw_response_create_overload_1(self, client: Cloudflare) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = response.parse()
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -87,7 +84,7 @@ def test_streaming_response_create_overload_1(self, client: Cloudflare) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = response.parse()
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -150,7 +147,7 @@ def test_method_create_overload_2(self, client: Cloudflare) -> None:
},
],
)
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -198,7 +195,7 @@ def test_method_create_with_all_params_overload_2(self, client: Cloudflare) -> N
],
status="accepted",
)
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -249,7 +246,7 @@ def test_raw_response_create_overload_2(self, client: Cloudflare) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = response.parse()
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -300,7 +297,7 @@ def test_streaming_response_create_overload_2(self, client: Cloudflare) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = response.parse()
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -358,7 +355,7 @@ def test_method_update_overload_1(self, client: Cloudflare) -> None:
member_id="4536bcfad5faccb111b47003c79917fa",
account_id="eb78d65290b24279ba6f44721b3ea3c4",
)
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="TODO: investigate broken test")
@parametrize
@@ -372,7 +369,7 @@ def test_method_update_with_all_params_overload_1(self, client: Cloudflare) -> N
{"id": "3536bcfad5faccb999b47003c79917fb"},
],
)
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="TODO: investigate broken test")
@parametrize
@@ -385,7 +382,7 @@ def test_raw_response_update_overload_1(self, client: Cloudflare) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = response.parse()
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="TODO: investigate broken test")
@parametrize
@@ -398,7 +395,7 @@ def test_streaming_response_update_overload_1(self, client: Cloudflare) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = response.parse()
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -462,7 +459,7 @@ def test_method_update_overload_2(self, client: Cloudflare) -> None:
},
],
)
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="TODO: investigate broken test")
@parametrize
@@ -513,7 +510,7 @@ def test_raw_response_update_overload_2(self, client: Cloudflare) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = response.parse()
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="TODO: investigate broken test")
@parametrize
@@ -564,7 +561,7 @@ def test_streaming_response_update_overload_2(self, client: Cloudflare) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = response.parse()
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -664,7 +661,7 @@ def test_method_list(self, client: Cloudflare) -> None:
member = client.accounts.members.list(
account_id="eb78d65290b24279ba6f44721b3ea3c4",
)
- assert_matches_type(SyncV4PagePaginationArray[MemberListResponse], member, path=["response"])
+ assert_matches_type(SyncV4PagePaginationArray[Member], member, path=["response"])
@parametrize
def test_method_list_with_all_params(self, client: Cloudflare) -> None:
@@ -676,7 +673,7 @@ def test_method_list_with_all_params(self, client: Cloudflare) -> None:
per_page=5,
status="accepted",
)
- assert_matches_type(SyncV4PagePaginationArray[MemberListResponse], member, path=["response"])
+ assert_matches_type(SyncV4PagePaginationArray[Member], member, path=["response"])
@parametrize
def test_raw_response_list(self, client: Cloudflare) -> None:
@@ -687,7 +684,7 @@ def test_raw_response_list(self, client: Cloudflare) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = response.parse()
- assert_matches_type(SyncV4PagePaginationArray[MemberListResponse], member, path=["response"])
+ assert_matches_type(SyncV4PagePaginationArray[Member], member, path=["response"])
@parametrize
def test_streaming_response_list(self, client: Cloudflare) -> None:
@@ -698,7 +695,7 @@ def test_streaming_response_list(self, client: Cloudflare) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = response.parse()
- assert_matches_type(SyncV4PagePaginationArray[MemberListResponse], member, path=["response"])
+ assert_matches_type(SyncV4PagePaginationArray[Member], member, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -768,7 +765,7 @@ def test_method_get(self, client: Cloudflare) -> None:
member_id="4536bcfad5faccb111b47003c79917fa",
account_id="eb78d65290b24279ba6f44721b3ea3c4",
)
- assert_matches_type(Optional[MemberGetResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -781,7 +778,7 @@ def test_raw_response_get(self, client: Cloudflare) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = response.parse()
- assert_matches_type(Optional[MemberGetResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -794,7 +791,7 @@ def test_streaming_response_get(self, client: Cloudflare) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = response.parse()
- assert_matches_type(Optional[MemberGetResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -829,7 +826,7 @@ async def test_method_create_overload_1(self, async_client: AsyncCloudflare) ->
"3536bcfad5faccb999b47003c79917fb",
],
)
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -844,7 +841,7 @@ async def test_method_create_with_all_params_overload_1(self, async_client: Asyn
],
status="accepted",
)
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -862,7 +859,7 @@ async def test_raw_response_create_overload_1(self, async_client: AsyncCloudflar
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = await response.parse()
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -880,7 +877,7 @@ async def test_streaming_response_create_overload_1(self, async_client: AsyncClo
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = await response.parse()
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -943,7 +940,7 @@ async def test_method_create_overload_2(self, async_client: AsyncCloudflare) ->
},
],
)
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -991,7 +988,7 @@ async def test_method_create_with_all_params_overload_2(self, async_client: Asyn
],
status="accepted",
)
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -1042,7 +1039,7 @@ async def test_raw_response_create_overload_2(self, async_client: AsyncCloudflar
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = await response.parse()
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -1093,7 +1090,7 @@ async def test_streaming_response_create_overload_2(self, async_client: AsyncClo
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = await response.parse()
- assert_matches_type(Optional[MemberCreateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -1151,7 +1148,7 @@ async def test_method_update_overload_1(self, async_client: AsyncCloudflare) ->
member_id="4536bcfad5faccb111b47003c79917fa",
account_id="eb78d65290b24279ba6f44721b3ea3c4",
)
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="TODO: investigate broken test")
@parametrize
@@ -1165,7 +1162,7 @@ async def test_method_update_with_all_params_overload_1(self, async_client: Asyn
{"id": "3536bcfad5faccb999b47003c79917fb"},
],
)
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="TODO: investigate broken test")
@parametrize
@@ -1178,7 +1175,7 @@ async def test_raw_response_update_overload_1(self, async_client: AsyncCloudflar
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = await response.parse()
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="TODO: investigate broken test")
@parametrize
@@ -1191,7 +1188,7 @@ async def test_streaming_response_update_overload_1(self, async_client: AsyncClo
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = await response.parse()
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -1255,7 +1252,7 @@ async def test_method_update_overload_2(self, async_client: AsyncCloudflare) ->
},
],
)
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="TODO: investigate broken test")
@parametrize
@@ -1306,7 +1303,7 @@ async def test_raw_response_update_overload_2(self, async_client: AsyncCloudflar
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = await response.parse()
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="TODO: investigate broken test")
@parametrize
@@ -1357,7 +1354,7 @@ async def test_streaming_response_update_overload_2(self, async_client: AsyncClo
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = await response.parse()
- assert_matches_type(Optional[MemberUpdateResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -1457,7 +1454,7 @@ async def test_method_list(self, async_client: AsyncCloudflare) -> None:
member = await async_client.accounts.members.list(
account_id="eb78d65290b24279ba6f44721b3ea3c4",
)
- assert_matches_type(AsyncV4PagePaginationArray[MemberListResponse], member, path=["response"])
+ assert_matches_type(AsyncV4PagePaginationArray[Member], member, path=["response"])
@parametrize
async def test_method_list_with_all_params(self, async_client: AsyncCloudflare) -> None:
@@ -1469,7 +1466,7 @@ async def test_method_list_with_all_params(self, async_client: AsyncCloudflare)
per_page=5,
status="accepted",
)
- assert_matches_type(AsyncV4PagePaginationArray[MemberListResponse], member, path=["response"])
+ assert_matches_type(AsyncV4PagePaginationArray[Member], member, path=["response"])
@parametrize
async def test_raw_response_list(self, async_client: AsyncCloudflare) -> None:
@@ -1480,7 +1477,7 @@ async def test_raw_response_list(self, async_client: AsyncCloudflare) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = await response.parse()
- assert_matches_type(AsyncV4PagePaginationArray[MemberListResponse], member, path=["response"])
+ assert_matches_type(AsyncV4PagePaginationArray[Member], member, path=["response"])
@parametrize
async def test_streaming_response_list(self, async_client: AsyncCloudflare) -> None:
@@ -1491,7 +1488,7 @@ async def test_streaming_response_list(self, async_client: AsyncCloudflare) -> N
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = await response.parse()
- assert_matches_type(AsyncV4PagePaginationArray[MemberListResponse], member, path=["response"])
+ assert_matches_type(AsyncV4PagePaginationArray[Member], member, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -1561,7 +1558,7 @@ async def test_method_get(self, async_client: AsyncCloudflare) -> None:
member_id="4536bcfad5faccb111b47003c79917fa",
account_id="eb78d65290b24279ba6f44721b3ea3c4",
)
- assert_matches_type(Optional[MemberGetResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -1574,7 +1571,7 @@ async def test_raw_response_get(self, async_client: AsyncCloudflare) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = await response.parse()
- assert_matches_type(Optional[MemberGetResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
@pytest.mark.skip(reason="HTTP 422 error from prism")
@parametrize
@@ -1587,7 +1584,7 @@ async def test_streaming_response_get(self, async_client: AsyncCloudflare) -> No
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
member = await response.parse()
- assert_matches_type(Optional[MemberGetResponse], member, path=["response"])
+ assert_matches_type(Optional[Member], member, path=["response"])
assert cast(Any, response.is_closed) is True
diff --git a/tests/api_resources/accounts/test_roles.py b/tests/api_resources/accounts/test_roles.py
index dee54072f7b..95df57ae04f 100644
--- a/tests/api_resources/accounts/test_roles.py
+++ b/tests/api_resources/accounts/test_roles.py
@@ -10,7 +10,7 @@
from cloudflare import Cloudflare, AsyncCloudflare
from tests.utils import assert_matches_type
from cloudflare.pagination import SyncSinglePage, AsyncSinglePage
-from cloudflare.types.accounts import RoleGetResponse, RoleListResponse
+from cloudflare.types.shared import Role
base_url = os.environ.get("TEST_API_BASE_URL", "http://127.0.0.1:4010")
@@ -23,7 +23,7 @@ def test_method_list(self, client: Cloudflare) -> None:
role = client.accounts.roles.list(
account_id="eb78d65290b24279ba6f44721b3ea3c4",
)
- assert_matches_type(SyncSinglePage[RoleListResponse], role, path=["response"])
+ assert_matches_type(SyncSinglePage[Role], role, path=["response"])
@parametrize
def test_raw_response_list(self, client: Cloudflare) -> None:
@@ -34,7 +34,7 @@ def test_raw_response_list(self, client: Cloudflare) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
role = response.parse()
- assert_matches_type(SyncSinglePage[RoleListResponse], role, path=["response"])
+ assert_matches_type(SyncSinglePage[Role], role, path=["response"])
@parametrize
def test_streaming_response_list(self, client: Cloudflare) -> None:
@@ -45,7 +45,7 @@ def test_streaming_response_list(self, client: Cloudflare) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
role = response.parse()
- assert_matches_type(SyncSinglePage[RoleListResponse], role, path=["response"])
+ assert_matches_type(SyncSinglePage[Role], role, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -62,7 +62,7 @@ def test_method_get(self, client: Cloudflare) -> None:
role_id="3536bcfad5faccb999b47003c79917fb",
account_id="eb78d65290b24279ba6f44721b3ea3c4",
)
- assert_matches_type(Optional[RoleGetResponse], role, path=["response"])
+ assert_matches_type(Optional[Role], role, path=["response"])
@parametrize
def test_raw_response_get(self, client: Cloudflare) -> None:
@@ -74,7 +74,7 @@ def test_raw_response_get(self, client: Cloudflare) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
role = response.parse()
- assert_matches_type(Optional[RoleGetResponse], role, path=["response"])
+ assert_matches_type(Optional[Role], role, path=["response"])
@parametrize
def test_streaming_response_get(self, client: Cloudflare) -> None:
@@ -86,7 +86,7 @@ def test_streaming_response_get(self, client: Cloudflare) -> None:
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
role = response.parse()
- assert_matches_type(Optional[RoleGetResponse], role, path=["response"])
+ assert_matches_type(Optional[Role], role, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -113,7 +113,7 @@ async def test_method_list(self, async_client: AsyncCloudflare) -> None:
role = await async_client.accounts.roles.list(
account_id="eb78d65290b24279ba6f44721b3ea3c4",
)
- assert_matches_type(AsyncSinglePage[RoleListResponse], role, path=["response"])
+ assert_matches_type(AsyncSinglePage[Role], role, path=["response"])
@parametrize
async def test_raw_response_list(self, async_client: AsyncCloudflare) -> None:
@@ -124,7 +124,7 @@ async def test_raw_response_list(self, async_client: AsyncCloudflare) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
role = await response.parse()
- assert_matches_type(AsyncSinglePage[RoleListResponse], role, path=["response"])
+ assert_matches_type(AsyncSinglePage[Role], role, path=["response"])
@parametrize
async def test_streaming_response_list(self, async_client: AsyncCloudflare) -> None:
@@ -135,7 +135,7 @@ async def test_streaming_response_list(self, async_client: AsyncCloudflare) -> N
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
role = await response.parse()
- assert_matches_type(AsyncSinglePage[RoleListResponse], role, path=["response"])
+ assert_matches_type(AsyncSinglePage[Role], role, path=["response"])
assert cast(Any, response.is_closed) is True
@@ -152,7 +152,7 @@ async def test_method_get(self, async_client: AsyncCloudflare) -> None:
role_id="3536bcfad5faccb999b47003c79917fb",
account_id="eb78d65290b24279ba6f44721b3ea3c4",
)
- assert_matches_type(Optional[RoleGetResponse], role, path=["response"])
+ assert_matches_type(Optional[Role], role, path=["response"])
@parametrize
async def test_raw_response_get(self, async_client: AsyncCloudflare) -> None:
@@ -164,7 +164,7 @@ async def test_raw_response_get(self, async_client: AsyncCloudflare) -> None:
assert response.is_closed is True
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
role = await response.parse()
- assert_matches_type(Optional[RoleGetResponse], role, path=["response"])
+ assert_matches_type(Optional[Role], role, path=["response"])
@parametrize
async def test_streaming_response_get(self, async_client: AsyncCloudflare) -> None:
@@ -176,7 +176,7 @@ async def test_streaming_response_get(self, async_client: AsyncCloudflare) -> No
assert response.http_request.headers.get("X-Stainless-Lang") == "python"
role = await response.parse()
- assert_matches_type(Optional[RoleGetResponse], role, path=["response"])
+ assert_matches_type(Optional[Role], role, path=["response"])
assert cast(Any, response.is_closed) is True