Skip to content

Commit 1cc4487

Browse files
feat(api): Add IAM User Groups and AutoRAG
1 parent 1239774 commit 1cc4487

33 files changed

+3186
-377
lines changed

.stats.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 1742
2-
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-efc58a88a6028fef3d08457bbffc331b54e2b8153dd5e3f4c693517d0c3d073e.yml
3-
openapi_spec_hash: bfc60ab47d6b393226b7c5c2014fed18
4-
config_hash: cb36b26a5fcc81fa60c65016b1e74f0a
1+
configured_endpoints: 1750
2+
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-6773492e97af018fae5cac5460979be509a3bb6c4d14ce80d805cb9e1328aa4f.yml
3+
openapi_spec_hash: de4f43cb837ae9de82f97c42520bd63d
4+
config_hash: 34d27311917dcf9fa18b91afc137e504

api.md

Lines changed: 43 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,9 @@ Methods:
160160
Types:
161161

162162
```python
163-
from cloudflare.types.ips import IPs, IPListResponse
163+
from cloudflare.types.ips import IPs
164164
```
165165

166-
Methods:
167-
168-
- <code title="get /ips">client.ips.<a href="./src/cloudflare/resources/ips.py">list</a>(\*\*<a href="src/cloudflare/types/ips/ip_list_params.py">params</a>) -> <a href="./src/cloudflare/types/ips/ip_list_response.py">Optional[IPListResponse]</a></code>
169-
170166
# Memberships
171167

172168
Types:
@@ -9198,6 +9194,48 @@ Methods:
91989194
- <code title="delete /accounts/{account_id}/iam/resource_groups/{resource_group_id}">client.iam.resource_groups.<a href="./src/cloudflare/resources/iam/resource_groups.py">delete</a>(resource_group_id, \*, account_id) -> <a href="./src/cloudflare/types/iam/resource_group_delete_response.py">Optional[ResourceGroupDeleteResponse]</a></code>
91999195
- <code title="get /accounts/{account_id}/iam/resource_groups/{resource_group_id}">client.iam.resource_groups.<a href="./src/cloudflare/resources/iam/resource_groups.py">get</a>(resource_group_id, \*, account_id) -> <a href="./src/cloudflare/types/iam/resource_group_get_response.py">ResourceGroupGetResponse</a></code>
92009196

9197+
## UserGroups
9198+
9199+
Types:
9200+
9201+
```python
9202+
from cloudflare.types.iam import (
9203+
UserGroupCreateResponse,
9204+
UserGroupUpdateResponse,
9205+
UserGroupListResponse,
9206+
UserGroupDeleteResponse,
9207+
UserGroupGetResponse,
9208+
)
9209+
```
9210+
9211+
Methods:
9212+
9213+
- <code title="post /accounts/{account_id}/iam/user_groups">client.iam.user_groups.<a href="./src/cloudflare/resources/iam/user_groups/user_groups.py">create</a>(\*, account_id, \*\*<a href="src/cloudflare/types/iam/user_group_create_params.py">params</a>) -> <a href="./src/cloudflare/types/iam/user_group_create_response.py">Optional[UserGroupCreateResponse]</a></code>
9214+
- <code title="put /accounts/{account_id}/iam/user_groups/{user_group_id}">client.iam.user_groups.<a href="./src/cloudflare/resources/iam/user_groups/user_groups.py">update</a>(user_group_id, \*, account_id, \*\*<a href="src/cloudflare/types/iam/user_group_update_params.py">params</a>) -> <a href="./src/cloudflare/types/iam/user_group_update_response.py">Optional[UserGroupUpdateResponse]</a></code>
9215+
- <code title="get /accounts/{account_id}/iam/user_groups">client.iam.user_groups.<a href="./src/cloudflare/resources/iam/user_groups/user_groups.py">list</a>(\*, account_id, \*\*<a href="src/cloudflare/types/iam/user_group_list_params.py">params</a>) -> <a href="./src/cloudflare/types/iam/user_group_list_response.py">SyncV4PagePaginationArray[UserGroupListResponse]</a></code>
9216+
- <code title="delete /accounts/{account_id}/iam/user_groups/{user_group_id}">client.iam.user_groups.<a href="./src/cloudflare/resources/iam/user_groups/user_groups.py">delete</a>(user_group_id, \*, account_id) -> <a href="./src/cloudflare/types/iam/user_group_delete_response.py">Optional[UserGroupDeleteResponse]</a></code>
9217+
- <code title="get /accounts/{account_id}/iam/user_groups/{user_group_id}">client.iam.user_groups.<a href="./src/cloudflare/resources/iam/user_groups/user_groups.py">get</a>(user_group_id, \*, account_id) -> <a href="./src/cloudflare/types/iam/user_group_get_response.py">Optional[UserGroupGetResponse]</a></code>
9218+
9219+
### Members
9220+
9221+
Types:
9222+
9223+
```python
9224+
from cloudflare.types.iam.user_groups import (
9225+
MemberCreateResponse,
9226+
MemberUpdateResponse,
9227+
MemberListResponse,
9228+
MemberDeleteResponse,
9229+
)
9230+
```
9231+
9232+
Methods:
9233+
9234+
- <code title="post /accounts/{account_id}/iam/user_groups/{user_group_id}/members">client.iam.user_groups.members.<a href="./src/cloudflare/resources/iam/user_groups/members.py">create</a>(user_group_id, \*, account_id, \*\*<a href="src/cloudflare/types/iam/user_groups/member_create_params.py">params</a>) -> <a href="./src/cloudflare/types/iam/user_groups/member_create_response.py">Optional[MemberCreateResponse]</a></code>
9235+
- <code title="put /accounts/{account_id}/iam/user_groups/{user_group_id}/members">client.iam.user_groups.members.<a href="./src/cloudflare/resources/iam/user_groups/members.py">update</a>(user_group_id, \*, account_id, \*\*<a href="src/cloudflare/types/iam/user_groups/member_update_params.py">params</a>) -> <a href="./src/cloudflare/types/iam/user_groups/member_update_response.py">SyncSinglePage[MemberUpdateResponse]</a></code>
9236+
- <code title="get /accounts/{account_id}/iam/user_groups/{user_group_id}/members">client.iam.user_groups.members.<a href="./src/cloudflare/resources/iam/user_groups/members.py">list</a>(user_group_id, \*, account_id, \*\*<a href="src/cloudflare/types/iam/user_groups/member_list_params.py">params</a>) -> <a href="./src/cloudflare/types/iam/user_groups/member_list_response.py">SyncV4PagePaginationArray[MemberListResponse]</a></code>
9237+
- <code title="delete /accounts/{account_id}/iam/user_groups/{user_group_id}/members/{member_id}">client.iam.user_groups.members.<a href="./src/cloudflare/resources/iam/user_groups/members.py">delete</a>(member_id, \*, account_id, user_group_id) -> <a href="./src/cloudflare/types/iam/user_groups/member_delete_response.py">Optional[MemberDeleteResponse]</a></code>
9238+
92019239
# CloudConnector
92029240

92039241
## Rules

src/cloudflare/_client.py

Lines changed: 0 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,6 @@
4141
acm,
4242
dns,
4343
iam,
44-
ips,
4544
rum,
4645
ssl,
4746
argo,
@@ -130,7 +129,6 @@
130129
magic_network_monitoring,
131130
origin_post_quantum_encryption,
132131
)
133-
from .resources.ips import IPsResource, AsyncIPsResource
134132
from .resources.ai.ai import AIResource, AsyncAIResource
135133
from .resources.d1.d1 import D1Resource, AsyncD1Resource
136134
from .resources.kv.kv import KVResource, AsyncKVResource
@@ -355,12 +353,6 @@ def origin_ca_certificates(self) -> OriginCACertificatesResource:
355353

356354
return OriginCACertificatesResource(self)
357355

358-
@cached_property
359-
def ips(self) -> IPsResource:
360-
from .resources.ips import IPsResource
361-
362-
return IPsResource(self)
363-
364356
@cached_property
365357
def memberships(self) -> MembershipsResource:
366358
from .resources.memberships import MembershipsResource
@@ -1187,12 +1179,6 @@ def origin_ca_certificates(self) -> AsyncOriginCACertificatesResource:
11871179

11881180
return AsyncOriginCACertificatesResource(self)
11891181

1190-
@cached_property
1191-
def ips(self) -> AsyncIPsResource:
1192-
from .resources.ips import AsyncIPsResource
1193-
1194-
return AsyncIPsResource(self)
1195-
11961182
@cached_property
11971183
def memberships(self) -> AsyncMembershipsResource:
11981184
from .resources.memberships import AsyncMembershipsResource
@@ -1947,12 +1933,6 @@ def origin_ca_certificates(self) -> origin_ca_certificates.OriginCACertificatesR
19471933

19481934
return OriginCACertificatesResourceWithRawResponse(self._client.origin_ca_certificates)
19491935

1950-
@cached_property
1951-
def ips(self) -> ips.IPsResourceWithRawResponse:
1952-
from .resources.ips import IPsResourceWithRawResponse
1953-
1954-
return IPsResourceWithRawResponse(self._client.ips)
1955-
19561936
@cached_property
19571937
def memberships(self) -> memberships.MembershipsResourceWithRawResponse:
19581938
from .resources.memberships import MembershipsResourceWithRawResponse
@@ -2526,12 +2506,6 @@ def origin_ca_certificates(self) -> origin_ca_certificates.AsyncOriginCACertific
25262506

25272507
return AsyncOriginCACertificatesResourceWithRawResponse(self._client.origin_ca_certificates)
25282508

2529-
@cached_property
2530-
def ips(self) -> ips.AsyncIPsResourceWithRawResponse:
2531-
from .resources.ips import AsyncIPsResourceWithRawResponse
2532-
2533-
return AsyncIPsResourceWithRawResponse(self._client.ips)
2534-
25352509
@cached_property
25362510
def memberships(self) -> memberships.AsyncMembershipsResourceWithRawResponse:
25372511
from .resources.memberships import AsyncMembershipsResourceWithRawResponse
@@ -3105,12 +3079,6 @@ def origin_ca_certificates(self) -> origin_ca_certificates.OriginCACertificatesR
31053079

31063080
return OriginCACertificatesResourceWithStreamingResponse(self._client.origin_ca_certificates)
31073081

3108-
@cached_property
3109-
def ips(self) -> ips.IPsResourceWithStreamingResponse:
3110-
from .resources.ips import IPsResourceWithStreamingResponse
3111-
3112-
return IPsResourceWithStreamingResponse(self._client.ips)
3113-
31143082
@cached_property
31153083
def memberships(self) -> memberships.MembershipsResourceWithStreamingResponse:
31163084
from .resources.memberships import MembershipsResourceWithStreamingResponse
@@ -3684,12 +3652,6 @@ def origin_ca_certificates(self) -> origin_ca_certificates.AsyncOriginCACertific
36843652

36853653
return AsyncOriginCACertificatesResourceWithStreamingResponse(self._client.origin_ca_certificates)
36863654

3687-
@cached_property
3688-
def ips(self) -> ips.AsyncIPsResourceWithStreamingResponse:
3689-
from .resources.ips import AsyncIPsResourceWithStreamingResponse
3690-
3691-
return AsyncIPsResourceWithStreamingResponse(self._client.ips)
3692-
36933655
@cached_property
36943656
def memberships(self) -> memberships.AsyncMembershipsResourceWithStreamingResponse:
36953657
from .resources.memberships import AsyncMembershipsResourceWithStreamingResponse

src/cloudflare/resources/iam/__init__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,14 @@
88
IAMResourceWithStreamingResponse,
99
AsyncIAMResourceWithStreamingResponse,
1010
)
11+
from .user_groups import (
12+
UserGroupsResource,
13+
AsyncUserGroupsResource,
14+
UserGroupsResourceWithRawResponse,
15+
AsyncUserGroupsResourceWithRawResponse,
16+
UserGroupsResourceWithStreamingResponse,
17+
AsyncUserGroupsResourceWithStreamingResponse,
18+
)
1119
from .resource_groups import (
1220
ResourceGroupsResource,
1321
AsyncResourceGroupsResource,
@@ -38,6 +46,12 @@
3846
"AsyncResourceGroupsResourceWithRawResponse",
3947
"ResourceGroupsResourceWithStreamingResponse",
4048
"AsyncResourceGroupsResourceWithStreamingResponse",
49+
"UserGroupsResource",
50+
"AsyncUserGroupsResource",
51+
"UserGroupsResourceWithRawResponse",
52+
"AsyncUserGroupsResourceWithRawResponse",
53+
"UserGroupsResourceWithStreamingResponse",
54+
"AsyncUserGroupsResourceWithStreamingResponse",
4155
"IAMResource",
4256
"AsyncIAMResource",
4357
"IAMResourceWithRawResponse",

src/cloudflare/resources/iam/iam.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,14 @@
2020
PermissionGroupsResourceWithStreamingResponse,
2121
AsyncPermissionGroupsResourceWithStreamingResponse,
2222
)
23+
from .user_groups.user_groups import (
24+
UserGroupsResource,
25+
AsyncUserGroupsResource,
26+
UserGroupsResourceWithRawResponse,
27+
AsyncUserGroupsResourceWithRawResponse,
28+
UserGroupsResourceWithStreamingResponse,
29+
AsyncUserGroupsResourceWithStreamingResponse,
30+
)
2331

2432
__all__ = ["IAMResource", "AsyncIAMResource"]
2533

@@ -33,6 +41,10 @@ def permission_groups(self) -> PermissionGroupsResource:
3341
def resource_groups(self) -> ResourceGroupsResource:
3442
return ResourceGroupsResource(self._client)
3543

44+
@cached_property
45+
def user_groups(self) -> UserGroupsResource:
46+
return UserGroupsResource(self._client)
47+
3648
@cached_property
3749
def with_raw_response(self) -> IAMResourceWithRawResponse:
3850
"""
@@ -62,6 +74,10 @@ def permission_groups(self) -> AsyncPermissionGroupsResource:
6274
def resource_groups(self) -> AsyncResourceGroupsResource:
6375
return AsyncResourceGroupsResource(self._client)
6476

77+
@cached_property
78+
def user_groups(self) -> AsyncUserGroupsResource:
79+
return AsyncUserGroupsResource(self._client)
80+
6581
@cached_property
6682
def with_raw_response(self) -> AsyncIAMResourceWithRawResponse:
6783
"""
@@ -94,6 +110,10 @@ def permission_groups(self) -> PermissionGroupsResourceWithRawResponse:
94110
def resource_groups(self) -> ResourceGroupsResourceWithRawResponse:
95111
return ResourceGroupsResourceWithRawResponse(self._iam.resource_groups)
96112

113+
@cached_property
114+
def user_groups(self) -> UserGroupsResourceWithRawResponse:
115+
return UserGroupsResourceWithRawResponse(self._iam.user_groups)
116+
97117

98118
class AsyncIAMResourceWithRawResponse:
99119
def __init__(self, iam: AsyncIAMResource) -> None:
@@ -107,6 +127,10 @@ def permission_groups(self) -> AsyncPermissionGroupsResourceWithRawResponse:
107127
def resource_groups(self) -> AsyncResourceGroupsResourceWithRawResponse:
108128
return AsyncResourceGroupsResourceWithRawResponse(self._iam.resource_groups)
109129

130+
@cached_property
131+
def user_groups(self) -> AsyncUserGroupsResourceWithRawResponse:
132+
return AsyncUserGroupsResourceWithRawResponse(self._iam.user_groups)
133+
110134

111135
class IAMResourceWithStreamingResponse:
112136
def __init__(self, iam: IAMResource) -> None:
@@ -120,6 +144,10 @@ def permission_groups(self) -> PermissionGroupsResourceWithStreamingResponse:
120144
def resource_groups(self) -> ResourceGroupsResourceWithStreamingResponse:
121145
return ResourceGroupsResourceWithStreamingResponse(self._iam.resource_groups)
122146

147+
@cached_property
148+
def user_groups(self) -> UserGroupsResourceWithStreamingResponse:
149+
return UserGroupsResourceWithStreamingResponse(self._iam.user_groups)
150+
123151

124152
class AsyncIAMResourceWithStreamingResponse:
125153
def __init__(self, iam: AsyncIAMResource) -> None:
@@ -132,3 +160,7 @@ def permission_groups(self) -> AsyncPermissionGroupsResourceWithStreamingRespons
132160
@cached_property
133161
def resource_groups(self) -> AsyncResourceGroupsResourceWithStreamingResponse:
134162
return AsyncResourceGroupsResourceWithStreamingResponse(self._iam.resource_groups)
163+
164+
@cached_property
165+
def user_groups(self) -> AsyncUserGroupsResourceWithStreamingResponse:
166+
return AsyncUserGroupsResourceWithStreamingResponse(self._iam.user_groups)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from .members import (
4+
MembersResource,
5+
AsyncMembersResource,
6+
MembersResourceWithRawResponse,
7+
AsyncMembersResourceWithRawResponse,
8+
MembersResourceWithStreamingResponse,
9+
AsyncMembersResourceWithStreamingResponse,
10+
)
11+
from .user_groups import (
12+
UserGroupsResource,
13+
AsyncUserGroupsResource,
14+
UserGroupsResourceWithRawResponse,
15+
AsyncUserGroupsResourceWithRawResponse,
16+
UserGroupsResourceWithStreamingResponse,
17+
AsyncUserGroupsResourceWithStreamingResponse,
18+
)
19+
20+
__all__ = [
21+
"MembersResource",
22+
"AsyncMembersResource",
23+
"MembersResourceWithRawResponse",
24+
"AsyncMembersResourceWithRawResponse",
25+
"MembersResourceWithStreamingResponse",
26+
"AsyncMembersResourceWithStreamingResponse",
27+
"UserGroupsResource",
28+
"AsyncUserGroupsResource",
29+
"UserGroupsResourceWithRawResponse",
30+
"AsyncUserGroupsResourceWithRawResponse",
31+
"UserGroupsResourceWithStreamingResponse",
32+
"AsyncUserGroupsResourceWithStreamingResponse",
33+
]

0 commit comments

Comments
 (0)