Skip to content

Commit 42705d7

Browse files
feat(api): Add DELETE and POST routes for Magic Connector
1 parent 9a96496 commit 42705d7

8 files changed

Lines changed: 546 additions & 3 deletions

File tree

.stats.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
configured_endpoints: 1759
1+
configured_endpoints: 1761
22
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/cloudflare%2Fcloudflare-b5f6a17157fe19892f8737208ed142c4d431d81cfe0d13bedc16a8213cc58f32.yml
33
openapi_spec_hash: 956f10079edd2cb55bd255500a85ccb3
4-
config_hash: 9a6819cd23665bc55dedbd5b424cc286
4+
config_hash: 73823d0a9cad0920101df8ab49b929ff

api.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3923,17 +3923,21 @@ Types:
39233923

39243924
```python
39253925
from cloudflare.types.magic_transit import (
3926+
ConnectorCreateResponse,
39263927
ConnectorUpdateResponse,
39273928
ConnectorListResponse,
3929+
ConnectorDeleteResponse,
39283930
ConnectorEditResponse,
39293931
ConnectorGetResponse,
39303932
)
39313933
```
39323934

39333935
Methods:
39343936

3937+
- <code title="post /accounts/{account_id}/magic/connectors">client.magic_transit.connectors.<a href="./src/cloudflare/resources/magic_transit/connectors/connectors.py">create</a>(\*, account_id, \*\*<a href="src/cloudflare/types/magic_transit/connector_create_params.py">params</a>) -> <a href="./src/cloudflare/types/magic_transit/connector_create_response.py">ConnectorCreateResponse</a></code>
39353938
- <code title="put /accounts/{account_id}/magic/connectors/{connector_id}">client.magic_transit.connectors.<a href="./src/cloudflare/resources/magic_transit/connectors/connectors.py">update</a>(connector_id, \*, account_id, \*\*<a href="src/cloudflare/types/magic_transit/connector_update_params.py">params</a>) -> <a href="./src/cloudflare/types/magic_transit/connector_update_response.py">ConnectorUpdateResponse</a></code>
39363939
- <code title="get /accounts/{account_id}/magic/connectors">client.magic_transit.connectors.<a href="./src/cloudflare/resources/magic_transit/connectors/connectors.py">list</a>(\*, account_id) -> <a href="./src/cloudflare/types/magic_transit/connector_list_response.py">SyncSinglePage[ConnectorListResponse]</a></code>
3940+
- <code title="delete /accounts/{account_id}/magic/connectors/{connector_id}">client.magic_transit.connectors.<a href="./src/cloudflare/resources/magic_transit/connectors/connectors.py">delete</a>(connector_id, \*, account_id) -> <a href="./src/cloudflare/types/magic_transit/connector_delete_response.py">ConnectorDeleteResponse</a></code>
39373941
- <code title="patch /accounts/{account_id}/magic/connectors/{connector_id}">client.magic_transit.connectors.<a href="./src/cloudflare/resources/magic_transit/connectors/connectors.py">edit</a>(connector_id, \*, account_id, \*\*<a href="src/cloudflare/types/magic_transit/connector_edit_params.py">params</a>) -> <a href="./src/cloudflare/types/magic_transit/connector_edit_response.py">ConnectorEditResponse</a></code>
39383942
- <code title="get /accounts/{account_id}/magic/connectors/{connector_id}">client.magic_transit.connectors.<a href="./src/cloudflare/resources/magic_transit/connectors/connectors.py">get</a>(connector_id, \*, account_id) -> <a href="./src/cloudflare/types/magic_transit/connector_get_response.py">ConnectorGetResponse</a></code>
39393943

src/cloudflare/resources/magic_transit/connectors/connectors.py

Lines changed: 223 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,10 +35,12 @@
3535
SnapshotsResourceWithStreamingResponse,
3636
AsyncSnapshotsResourceWithStreamingResponse,
3737
)
38-
from ....types.magic_transit import connector_edit_params, connector_update_params
38+
from ....types.magic_transit import connector_edit_params, connector_create_params, connector_update_params
3939
from ....types.magic_transit.connector_get_response import ConnectorGetResponse
4040
from ....types.magic_transit.connector_edit_response import ConnectorEditResponse
4141
from ....types.magic_transit.connector_list_response import ConnectorListResponse
42+
from ....types.magic_transit.connector_create_response import ConnectorCreateResponse
43+
from ....types.magic_transit.connector_delete_response import ConnectorDeleteResponse
4244
from ....types.magic_transit.connector_update_response import ConnectorUpdateResponse
4345

4446
__all__ = ["ConnectorsResource", "AsyncConnectorsResource"]
@@ -72,6 +74,62 @@ def with_streaming_response(self) -> ConnectorsResourceWithStreamingResponse:
7274
"""
7375
return ConnectorsResourceWithStreamingResponse(self)
7476

77+
def create(
78+
self,
79+
*,
80+
account_id: str,
81+
device: connector_create_params.Device,
82+
activated: bool | NotGiven = NOT_GIVEN,
83+
interrupt_window_duration_hours: float | NotGiven = NOT_GIVEN,
84+
interrupt_window_hour_of_day: float | NotGiven = NOT_GIVEN,
85+
notes: str | NotGiven = NOT_GIVEN,
86+
timezone: str | NotGiven = NOT_GIVEN,
87+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
88+
# The extra values given here take precedence over values defined on the client or passed to this method.
89+
extra_headers: Headers | None = None,
90+
extra_query: Query | None = None,
91+
extra_body: Body | None = None,
92+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
93+
) -> ConnectorCreateResponse:
94+
"""
95+
Add a connector to your account
96+
97+
Args:
98+
account_id: Account identifier
99+
100+
extra_headers: Send extra headers
101+
102+
extra_query: Add additional query parameters to the request
103+
104+
extra_body: Add additional JSON properties to the request
105+
106+
timeout: Override the client-level default timeout for this request, in seconds
107+
"""
108+
if not account_id:
109+
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
110+
return self._post(
111+
f"/accounts/{account_id}/magic/connectors",
112+
body=maybe_transform(
113+
{
114+
"device": device,
115+
"activated": activated,
116+
"interrupt_window_duration_hours": interrupt_window_duration_hours,
117+
"interrupt_window_hour_of_day": interrupt_window_hour_of_day,
118+
"notes": notes,
119+
"timezone": timezone,
120+
},
121+
connector_create_params.ConnectorCreateParams,
122+
),
123+
options=make_request_options(
124+
extra_headers=extra_headers,
125+
extra_query=extra_query,
126+
extra_body=extra_body,
127+
timeout=timeout,
128+
post_parser=ResultWrapper[ConnectorCreateResponse]._unwrapper,
129+
),
130+
cast_to=cast(Type[ConnectorCreateResponse], ResultWrapper[ConnectorCreateResponse]),
131+
)
132+
75133
def update(
76134
self,
77135
connector_id: str,
@@ -165,6 +223,48 @@ def list(
165223
model=ConnectorListResponse,
166224
)
167225

226+
def delete(
227+
self,
228+
connector_id: str,
229+
*,
230+
account_id: str,
231+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
232+
# The extra values given here take precedence over values defined on the client or passed to this method.
233+
extra_headers: Headers | None = None,
234+
extra_query: Query | None = None,
235+
extra_body: Body | None = None,
236+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
237+
) -> ConnectorDeleteResponse:
238+
"""
239+
Remove a connector from your account
240+
241+
Args:
242+
account_id: Account identifier
243+
244+
extra_headers: Send extra headers
245+
246+
extra_query: Add additional query parameters to the request
247+
248+
extra_body: Add additional JSON properties to the request
249+
250+
timeout: Override the client-level default timeout for this request, in seconds
251+
"""
252+
if not account_id:
253+
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
254+
if not connector_id:
255+
raise ValueError(f"Expected a non-empty value for `connector_id` but received {connector_id!r}")
256+
return self._delete(
257+
f"/accounts/{account_id}/magic/connectors/{connector_id}",
258+
options=make_request_options(
259+
extra_headers=extra_headers,
260+
extra_query=extra_query,
261+
extra_body=extra_body,
262+
timeout=timeout,
263+
post_parser=ResultWrapper[ConnectorDeleteResponse]._unwrapper,
264+
),
265+
cast_to=cast(Type[ConnectorDeleteResponse], ResultWrapper[ConnectorDeleteResponse]),
266+
)
267+
168268
def edit(
169269
self,
170270
connector_id: str,
@@ -293,6 +393,62 @@ def with_streaming_response(self) -> AsyncConnectorsResourceWithStreamingRespons
293393
"""
294394
return AsyncConnectorsResourceWithStreamingResponse(self)
295395

396+
async def create(
397+
self,
398+
*,
399+
account_id: str,
400+
device: connector_create_params.Device,
401+
activated: bool | NotGiven = NOT_GIVEN,
402+
interrupt_window_duration_hours: float | NotGiven = NOT_GIVEN,
403+
interrupt_window_hour_of_day: float | NotGiven = NOT_GIVEN,
404+
notes: str | NotGiven = NOT_GIVEN,
405+
timezone: str | NotGiven = NOT_GIVEN,
406+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
407+
# The extra values given here take precedence over values defined on the client or passed to this method.
408+
extra_headers: Headers | None = None,
409+
extra_query: Query | None = None,
410+
extra_body: Body | None = None,
411+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
412+
) -> ConnectorCreateResponse:
413+
"""
414+
Add a connector to your account
415+
416+
Args:
417+
account_id: Account identifier
418+
419+
extra_headers: Send extra headers
420+
421+
extra_query: Add additional query parameters to the request
422+
423+
extra_body: Add additional JSON properties to the request
424+
425+
timeout: Override the client-level default timeout for this request, in seconds
426+
"""
427+
if not account_id:
428+
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
429+
return await self._post(
430+
f"/accounts/{account_id}/magic/connectors",
431+
body=await async_maybe_transform(
432+
{
433+
"device": device,
434+
"activated": activated,
435+
"interrupt_window_duration_hours": interrupt_window_duration_hours,
436+
"interrupt_window_hour_of_day": interrupt_window_hour_of_day,
437+
"notes": notes,
438+
"timezone": timezone,
439+
},
440+
connector_create_params.ConnectorCreateParams,
441+
),
442+
options=make_request_options(
443+
extra_headers=extra_headers,
444+
extra_query=extra_query,
445+
extra_body=extra_body,
446+
timeout=timeout,
447+
post_parser=ResultWrapper[ConnectorCreateResponse]._unwrapper,
448+
),
449+
cast_to=cast(Type[ConnectorCreateResponse], ResultWrapper[ConnectorCreateResponse]),
450+
)
451+
296452
async def update(
297453
self,
298454
connector_id: str,
@@ -386,6 +542,48 @@ def list(
386542
model=ConnectorListResponse,
387543
)
388544

545+
async def delete(
546+
self,
547+
connector_id: str,
548+
*,
549+
account_id: str,
550+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
551+
# The extra values given here take precedence over values defined on the client or passed to this method.
552+
extra_headers: Headers | None = None,
553+
extra_query: Query | None = None,
554+
extra_body: Body | None = None,
555+
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
556+
) -> ConnectorDeleteResponse:
557+
"""
558+
Remove a connector from your account
559+
560+
Args:
561+
account_id: Account identifier
562+
563+
extra_headers: Send extra headers
564+
565+
extra_query: Add additional query parameters to the request
566+
567+
extra_body: Add additional JSON properties to the request
568+
569+
timeout: Override the client-level default timeout for this request, in seconds
570+
"""
571+
if not account_id:
572+
raise ValueError(f"Expected a non-empty value for `account_id` but received {account_id!r}")
573+
if not connector_id:
574+
raise ValueError(f"Expected a non-empty value for `connector_id` but received {connector_id!r}")
575+
return await self._delete(
576+
f"/accounts/{account_id}/magic/connectors/{connector_id}",
577+
options=make_request_options(
578+
extra_headers=extra_headers,
579+
extra_query=extra_query,
580+
extra_body=extra_body,
581+
timeout=timeout,
582+
post_parser=ResultWrapper[ConnectorDeleteResponse]._unwrapper,
583+
),
584+
cast_to=cast(Type[ConnectorDeleteResponse], ResultWrapper[ConnectorDeleteResponse]),
585+
)
586+
389587
async def edit(
390588
self,
391589
connector_id: str,
@@ -490,12 +688,18 @@ class ConnectorsResourceWithRawResponse:
490688
def __init__(self, connectors: ConnectorsResource) -> None:
491689
self._connectors = connectors
492690

691+
self.create = to_raw_response_wrapper(
692+
connectors.create,
693+
)
493694
self.update = to_raw_response_wrapper(
494695
connectors.update,
495696
)
496697
self.list = to_raw_response_wrapper(
497698
connectors.list,
498699
)
700+
self.delete = to_raw_response_wrapper(
701+
connectors.delete,
702+
)
499703
self.edit = to_raw_response_wrapper(
500704
connectors.edit,
501705
)
@@ -516,12 +720,18 @@ class AsyncConnectorsResourceWithRawResponse:
516720
def __init__(self, connectors: AsyncConnectorsResource) -> None:
517721
self._connectors = connectors
518722

723+
self.create = async_to_raw_response_wrapper(
724+
connectors.create,
725+
)
519726
self.update = async_to_raw_response_wrapper(
520727
connectors.update,
521728
)
522729
self.list = async_to_raw_response_wrapper(
523730
connectors.list,
524731
)
732+
self.delete = async_to_raw_response_wrapper(
733+
connectors.delete,
734+
)
525735
self.edit = async_to_raw_response_wrapper(
526736
connectors.edit,
527737
)
@@ -542,12 +752,18 @@ class ConnectorsResourceWithStreamingResponse:
542752
def __init__(self, connectors: ConnectorsResource) -> None:
543753
self._connectors = connectors
544754

755+
self.create = to_streamed_response_wrapper(
756+
connectors.create,
757+
)
545758
self.update = to_streamed_response_wrapper(
546759
connectors.update,
547760
)
548761
self.list = to_streamed_response_wrapper(
549762
connectors.list,
550763
)
764+
self.delete = to_streamed_response_wrapper(
765+
connectors.delete,
766+
)
551767
self.edit = to_streamed_response_wrapper(
552768
connectors.edit,
553769
)
@@ -568,12 +784,18 @@ class AsyncConnectorsResourceWithStreamingResponse:
568784
def __init__(self, connectors: AsyncConnectorsResource) -> None:
569785
self._connectors = connectors
570786

787+
self.create = async_to_streamed_response_wrapper(
788+
connectors.create,
789+
)
571790
self.update = async_to_streamed_response_wrapper(
572791
connectors.update,
573792
)
574793
self.list = async_to_streamed_response_wrapper(
575794
connectors.list,
576795
)
796+
self.delete = async_to_streamed_response_wrapper(
797+
connectors.delete,
798+
)
577799
self.edit = async_to_streamed_response_wrapper(
578800
connectors.edit,
579801
)

src/cloudflare/types/magic_transit/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
from .route_delete_response import RouteDeleteResponse as RouteDeleteResponse
4242
from .route_update_response import RouteUpdateResponse as RouteUpdateResponse
4343
from .connector_get_response import ConnectorGetResponse as ConnectorGetResponse
44+
from .connector_create_params import ConnectorCreateParams as ConnectorCreateParams
4445
from .connector_edit_response import ConnectorEditResponse as ConnectorEditResponse
4546
from .connector_list_response import ConnectorListResponse as ConnectorListResponse
4647
from .connector_update_params import ConnectorUpdateParams as ConnectorUpdateParams
@@ -49,6 +50,8 @@
4950
from .gre_tunnel_list_response import GRETunnelListResponse as GRETunnelListResponse
5051
from .gre_tunnel_update_params import GRETunnelUpdateParams as GRETunnelUpdateParams
5152
from .route_bulk_update_params import RouteBulkUpdateParams as RouteBulkUpdateParams
53+
from .connector_create_response import ConnectorCreateResponse as ConnectorCreateResponse
54+
from .connector_delete_response import ConnectorDeleteResponse as ConnectorDeleteResponse
5255
from .connector_update_response import ConnectorUpdateResponse as ConnectorUpdateResponse
5356
from .ipsec_tunnel_get_response import IPSECTunnelGetResponse as IPSECTunnelGetResponse
5457
from .gre_tunnel_create_response import GRETunnelCreateResponse as GRETunnelCreateResponse
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2+
3+
from __future__ import annotations
4+
5+
from typing_extensions import Required, TypedDict
6+
7+
__all__ = ["ConnectorCreateParams", "Device"]
8+
9+
10+
class ConnectorCreateParams(TypedDict, total=False):
11+
account_id: Required[str]
12+
"""Account identifier"""
13+
14+
device: Required[Device]
15+
16+
activated: bool
17+
18+
interrupt_window_duration_hours: float
19+
20+
interrupt_window_hour_of_day: float
21+
22+
notes: str
23+
24+
timezone: str
25+
26+
27+
class Device(TypedDict, total=False):
28+
id: str
29+
30+
serial_number: str

0 commit comments

Comments
 (0)