Add Pages resource and Gateway resource with DNS alignment

New Pages resource for CF Pages project/deployment/domain management.
New Gateway resource for rate limit and routing rule CRUD. DNS resource
gains update_record and verify_domain methods for platform alignment.
This commit is contained in:
Zoo Queen
2026-03-03 07:45:05 -08:00
parent 698173e8be
commit 1db6fdf022
5 changed files with 931 additions and 242 deletions
+9
View File
@@ -37,6 +37,7 @@ from .resources import (
add,
db,
dns,
pages,
kms,
kv,
mpc,
@@ -217,6 +218,7 @@ class Hanzo(SyncAPIClient):
db: db.DBResource
kv: kv.KVResource
dns: dns.DNSResource
pages: pages.PagesResource
kms: kms.KMSResource
cart: cart.CartResource
edge: edge.EdgeResource
@@ -403,6 +405,7 @@ class Hanzo(SyncAPIClient):
self.db = db.DBResource(self)
self.kv = kv.KVResource(self)
self.dns = dns.DNSResource(self)
self.pages = pages.PagesResource(self)
self.kms = kms.KMSResource(self)
self.cart = cart.CartResource(self)
self.edge = edge.EdgeResource(self)
@@ -651,6 +654,7 @@ class AsyncHanzo(AsyncAPIClient):
db: db.AsyncDBResource
kv: kv.AsyncKVResource
dns: dns.AsyncDNSResource
pages: pages.AsyncPagesResource
kms: kms.AsyncKMSResource
cart: cart.AsyncCartResource
edge: edge.AsyncEdgeResource
@@ -837,6 +841,7 @@ class AsyncHanzo(AsyncAPIClient):
self.db = db.AsyncDBResource(self)
self.kv = kv.AsyncKVResource(self)
self.dns = dns.AsyncDNSResource(self)
self.pages = pages.AsyncPagesResource(self)
self.kms = kms.AsyncKMSResource(self)
self.cart = cart.AsyncCartResource(self)
self.edge = edge.AsyncEdgeResource(self)
@@ -1107,6 +1112,7 @@ class HanzoWithRawResponse:
self.db = db.DBResourceWithRawResponse(client.db)
self.kv = kv.KVResourceWithRawResponse(client.kv)
self.dns = dns.DNSResourceWithRawResponse(client.dns)
self.pages = pages.PagesResourceWithRawResponse(client.pages)
self.kms = kms.KMSResourceWithRawResponse(client.kms)
self.cart = cart.CartResourceWithRawResponse(client.cart)
self.edge = edge.EdgeResourceWithRawResponse(client.edge)
@@ -1257,6 +1263,7 @@ class AsyncHanzoWithRawResponse:
self.db = db.AsyncDBResourceWithRawResponse(client.db)
self.kv = kv.AsyncKVResourceWithRawResponse(client.kv)
self.dns = dns.AsyncDNSResourceWithRawResponse(client.dns)
self.pages = pages.AsyncPagesResourceWithRawResponse(client.pages)
self.kms = kms.AsyncKMSResourceWithRawResponse(client.kms)
self.cart = cart.AsyncCartResourceWithRawResponse(client.cart)
self.edge = edge.AsyncEdgeResourceWithRawResponse(client.edge)
@@ -1419,6 +1426,7 @@ class HanzoWithStreamedResponse:
self.db = db.DBResourceWithStreamingResponse(client.db)
self.kv = kv.KVResourceWithStreamingResponse(client.kv)
self.dns = dns.DNSResourceWithStreamingResponse(client.dns)
self.pages = pages.PagesResourceWithStreamingResponse(client.pages)
self.kms = kms.KMSResourceWithStreamingResponse(client.kms)
self.cart = cart.CartResourceWithStreamingResponse(client.cart)
self.edge = edge.EdgeResourceWithStreamingResponse(client.edge)
@@ -1591,6 +1599,7 @@ class AsyncHanzoWithStreamedResponse:
self.db = db.AsyncDBResourceWithStreamingResponse(client.db)
self.kv = kv.AsyncKVResourceWithStreamingResponse(client.kv)
self.dns = dns.AsyncDNSResourceWithStreamingResponse(client.dns)
self.pages = pages.AsyncPagesResourceWithStreamingResponse(client.pages)
self.kms = kms.AsyncKMSResourceWithStreamingResponse(client.kms)
self.cart = cart.AsyncCartResourceWithStreamingResponse(client.cart)
self.edge = edge.AsyncEdgeResourceWithStreamingResponse(client.edge)
+14
View File
@@ -33,6 +33,14 @@ from .dns import (
DNSResourceWithStreamingResponse,
AsyncDNSResourceWithStreamingResponse,
)
from .pages import (
PagesResource,
AsyncPagesResource,
PagesResourceWithRawResponse,
AsyncPagesResourceWithRawResponse,
PagesResourceWithStreamingResponse,
AsyncPagesResourceWithStreamingResponse,
)
from .key import (
KeyResource,
AsyncKeyResource,
@@ -1394,6 +1402,12 @@ __all__ = [
"AsyncDNSResourceWithRawResponse",
"DNSResourceWithStreamingResponse",
"AsyncDNSResourceWithStreamingResponse",
"PagesResource",
"AsyncPagesResource",
"PagesResourceWithRawResponse",
"AsyncPagesResourceWithRawResponse",
"PagesResourceWithStreamingResponse",
"AsyncPagesResourceWithStreamingResponse",
# Build/Release Resources
"BuildResource",
"AsyncBuildResource",
+116
View File
@@ -136,6 +136,40 @@ class DNSResource(SyncAPIResource):
cast_to=object,
)
def update_record(
self,
zone_id: str,
record_id: str,
*,
type: str,
name: str,
content: str,
proxied: bool | NotGiven = NOT_GIVEN,
ttl: int | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Update a DNS record."""
return self._put(
f"/dns/zones/{zone_id}/records/{record_id}",
body={
"type": type,
"name": name,
"content": content,
"proxied": proxied,
"ttl": ttl,
},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def delete_record(
self,
zone_id: str,
@@ -158,6 +192,30 @@ class DNSResource(SyncAPIResource):
cast_to=object,
)
# Domain verification
def verify_domain(
self,
domain: str,
*,
expected_ip: str | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Verify DNS configuration for a domain."""
return self._post(
"/dns/verify",
body={"domain": domain, "expectedIp": expected_ip},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
# Service linking
def link(
self,
@@ -329,6 +387,40 @@ class AsyncDNSResource(AsyncAPIResource):
cast_to=object,
)
async def update_record(
self,
zone_id: str,
record_id: str,
*,
type: str,
name: str,
content: str,
proxied: bool | NotGiven = NOT_GIVEN,
ttl: int | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Update a DNS record."""
return await self._put(
f"/dns/zones/{zone_id}/records/{record_id}",
body={
"type": type,
"name": name,
"content": content,
"proxied": proxied,
"ttl": ttl,
},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def delete_record(
self,
zone_id: str,
@@ -351,6 +443,30 @@ class AsyncDNSResource(AsyncAPIResource):
cast_to=object,
)
# Domain verification
async def verify_domain(
self,
domain: str,
*,
expected_ip: str | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Verify DNS configuration for a domain."""
return await self._post(
"/dns/verify",
body={"domain": domain, "expectedIp": expected_ip},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def link(
self,
*,
+382 -242
View File
@@ -13,7 +13,7 @@ from .._base_client import make_request_options
class GatewayResource(SyncAPIResource):
"""Site-to-site gateway and bridge management."""
"""API gateway management service."""
@cached_property
def with_raw_response(self) -> GatewayResourceWithRawResponse:
@@ -23,119 +23,9 @@ class GatewayResource(SyncAPIResource):
def with_streaming_response(self) -> GatewayResourceWithStreamingResponse:
return GatewayResourceWithStreamingResponse(self)
def create(
self,
*,
name: str,
type: str | NotGiven = NOT_GIVEN,
config: Dict[str, Any] | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Create a gateway."""
return self._post(
"/gateway",
body={"name": name, "type": type, "config": config},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def list(
self,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""List gateways."""
return self._get(
"/gateway",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def get(
self,
gateway_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Get gateway details."""
return self._get(
f"/gateway/{gateway_id}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def delete(
self,
gateway_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Delete a gateway."""
return self._delete(
f"/gateway/{gateway_id}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def attach(
self,
gateway_id: str,
*,
target: str,
target_type: str,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Attach gateway to VPC/subnet/k8s."""
return self._post(
f"/gateway/{gateway_id}/attach",
body={"target": target, "target_type": target_type},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
# Status
def status(
self,
gateway_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
@@ -144,7 +34,7 @@ class GatewayResource(SyncAPIResource):
) -> object:
"""Get gateway status."""
return self._get(
f"/gateway/{gateway_id}/status",
"/gateway/status",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -154,18 +44,18 @@ class GatewayResource(SyncAPIResource):
cast_to=object,
)
def logs(
# Rate limit management
def list_rate_limits(
self,
gateway_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Get gateway logs."""
"""List all rate limit rules."""
return self._get(
f"/gateway/{gateway_id}/logs",
"/gateway/rate-limits",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -175,18 +65,198 @@ class GatewayResource(SyncAPIResource):
cast_to=object,
)
def rotate_keys(
def create_rate_limit(
self,
gateway_id: str,
*,
name: str,
scope: str,
requests_per_minute: int,
burst_size: int,
scope_id: str | NotGiven = NOT_GIVEN,
enabled: bool | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Create a rate limit rule."""
return self._post(
"/gateway/rate-limits",
body={
"name": name,
"scope": scope,
"scopeId": scope_id,
"requestsPerMinute": requests_per_minute,
"burstSize": burst_size,
"enabled": enabled,
},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def update_rate_limit(
self,
rule_id: str,
*,
name: str | NotGiven = NOT_GIVEN,
requests_per_minute: int | NotGiven = NOT_GIVEN,
burst_size: int | NotGiven = NOT_GIVEN,
enabled: bool | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Update a rate limit rule."""
return self._put(
f"/gateway/rate-limits/{rule_id}",
body={
"name": name,
"requestsPerMinute": requests_per_minute,
"burstSize": burst_size,
"enabled": enabled,
},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def delete_rate_limit(
self,
rule_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Rotate gateway keys."""
"""Delete a rate limit rule."""
return self._delete(
f"/gateway/rate-limits/{rule_id}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
# Route management
def list_routes(
self,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""List all gateway routes."""
return self._get(
"/gateway/routes",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def create_route(
self,
*,
name: str,
host: str,
backend: str,
path_prefix: str | NotGiven = NOT_GIVEN,
middlewares: List[str] | NotGiven = NOT_GIVEN,
priority: int | NotGiven = NOT_GIVEN,
enabled: bool | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Create a gateway route."""
return self._post(
f"/gateway/{gateway_id}/rotate-keys",
"/gateway/routes",
body={
"name": name,
"host": host,
"backend": backend,
"pathPrefix": path_prefix,
"middlewares": middlewares,
"priority": priority,
"enabled": enabled,
},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def update_route(
self,
rule_id: str,
*,
name: str | NotGiven = NOT_GIVEN,
host: str | NotGiven = NOT_GIVEN,
backend: str | NotGiven = NOT_GIVEN,
path_prefix: str | NotGiven = NOT_GIVEN,
middlewares: List[str] | NotGiven = NOT_GIVEN,
priority: int | NotGiven = NOT_GIVEN,
enabled: bool | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Update a gateway route."""
return self._put(
f"/gateway/routes/{rule_id}",
body={
"name": name,
"host": host,
"backend": backend,
"pathPrefix": path_prefix,
"middlewares": middlewares,
"priority": priority,
"enabled": enabled,
},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def delete_route(
self,
rule_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Delete a gateway route."""
return self._delete(
f"/gateway/routes/{rule_id}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -198,7 +268,7 @@ class GatewayResource(SyncAPIResource):
class AsyncGatewayResource(AsyncAPIResource):
"""Site-to-site gateway and bridge management."""
"""API gateway management service."""
@cached_property
def with_raw_response(self) -> AsyncGatewayResourceWithRawResponse:
@@ -208,119 +278,9 @@ class AsyncGatewayResource(AsyncAPIResource):
def with_streaming_response(self) -> AsyncGatewayResourceWithStreamingResponse:
return AsyncGatewayResourceWithStreamingResponse(self)
async def create(
self,
*,
name: str,
type: str | NotGiven = NOT_GIVEN,
config: Dict[str, Any] | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Create a gateway."""
return await self._post(
"/gateway",
body={"name": name, "type": type, "config": config},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def list(
self,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""List gateways."""
return await self._get(
"/gateway",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def get(
self,
gateway_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Get gateway details."""
return await self._get(
f"/gateway/{gateway_id}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def delete(
self,
gateway_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Delete a gateway."""
return await self._delete(
f"/gateway/{gateway_id}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def attach(
self,
gateway_id: str,
*,
target: str,
target_type: str,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Attach gateway to VPC/subnet/k8s."""
return await self._post(
f"/gateway/{gateway_id}/attach",
body={"target": target, "target_type": target_type},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
# Status
async def status(
self,
gateway_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
@@ -329,7 +289,7 @@ class AsyncGatewayResource(AsyncAPIResource):
) -> object:
"""Get gateway status."""
return await self._get(
f"/gateway/{gateway_id}/status",
"/gateway/status",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -339,18 +299,18 @@ class AsyncGatewayResource(AsyncAPIResource):
cast_to=object,
)
async def logs(
# Rate limit management
async def list_rate_limits(
self,
gateway_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Get gateway logs."""
"""List all rate limit rules."""
return await self._get(
f"/gateway/{gateway_id}/logs",
"/gateway/rate-limits",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
@@ -360,18 +320,198 @@ class AsyncGatewayResource(AsyncAPIResource):
cast_to=object,
)
async def rotate_keys(
async def create_rate_limit(
self,
gateway_id: str,
*,
name: str,
scope: str,
requests_per_minute: int,
burst_size: int,
scope_id: str | NotGiven = NOT_GIVEN,
enabled: bool | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Create a rate limit rule."""
return await self._post(
"/gateway/rate-limits",
body={
"name": name,
"scope": scope,
"scopeId": scope_id,
"requestsPerMinute": requests_per_minute,
"burstSize": burst_size,
"enabled": enabled,
},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def update_rate_limit(
self,
rule_id: str,
*,
name: str | NotGiven = NOT_GIVEN,
requests_per_minute: int | NotGiven = NOT_GIVEN,
burst_size: int | NotGiven = NOT_GIVEN,
enabled: bool | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Update a rate limit rule."""
return await self._put(
f"/gateway/rate-limits/{rule_id}",
body={
"name": name,
"requestsPerMinute": requests_per_minute,
"burstSize": burst_size,
"enabled": enabled,
},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def delete_rate_limit(
self,
rule_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Rotate gateway keys."""
"""Delete a rate limit rule."""
return await self._delete(
f"/gateway/rate-limits/{rule_id}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
# Route management
async def list_routes(
self,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""List all gateway routes."""
return await self._get(
"/gateway/routes",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def create_route(
self,
*,
name: str,
host: str,
backend: str,
path_prefix: str | NotGiven = NOT_GIVEN,
middlewares: List[str] | NotGiven = NOT_GIVEN,
priority: int | NotGiven = NOT_GIVEN,
enabled: bool | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Create a gateway route."""
return await self._post(
f"/gateway/{gateway_id}/rotate-keys",
"/gateway/routes",
body={
"name": name,
"host": host,
"backend": backend,
"pathPrefix": path_prefix,
"middlewares": middlewares,
"priority": priority,
"enabled": enabled,
},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def update_route(
self,
rule_id: str,
*,
name: str | NotGiven = NOT_GIVEN,
host: str | NotGiven = NOT_GIVEN,
backend: str | NotGiven = NOT_GIVEN,
path_prefix: str | NotGiven = NOT_GIVEN,
middlewares: List[str] | NotGiven = NOT_GIVEN,
priority: int | NotGiven = NOT_GIVEN,
enabled: bool | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Update a gateway route."""
return await self._put(
f"/gateway/routes/{rule_id}",
body={
"name": name,
"host": host,
"backend": backend,
"pathPrefix": path_prefix,
"middlewares": middlewares,
"priority": priority,
"enabled": enabled,
},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def delete_route(
self,
rule_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Delete a gateway route."""
return await self._delete(
f"/gateway/routes/{rule_id}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
+410
View File
@@ -0,0 +1,410 @@
# Hanzo AI SDK
from __future__ import annotations
from typing import Any, Dict, List
import httpx
from .._types import NOT_GIVEN, Body, Query, Headers, NotGiven
from .._compat import cached_property
from .._resource import SyncAPIResource, AsyncAPIResource
from .._base_client import make_request_options
class PagesResource(SyncAPIResource):
"""Cloudflare Pages project management service."""
@cached_property
def with_raw_response(self) -> PagesResourceWithRawResponse:
return PagesResourceWithRawResponse(self)
@cached_property
def with_streaming_response(self) -> PagesResourceWithStreamingResponse:
return PagesResourceWithStreamingResponse(self)
# Project management
def list_projects(
self,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""List all Pages projects."""
return self._get(
"/pages/projects",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def get_project(
self,
project_name: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Get a Pages project by name."""
return self._get(
f"/pages/projects/{project_name}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def create_project(
self,
*,
name: str,
production_branch: str | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Create a new Pages project."""
return self._post(
"/pages/projects",
body={"name": name, "production_branch": production_branch},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def delete_project(
self,
project_name: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Delete a Pages project."""
return self._delete(
f"/pages/projects/{project_name}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
# Deployment management
def list_deployments(
self,
project_name: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""List deployments for a Pages project."""
return self._get(
f"/pages/projects/{project_name}/deployments",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def trigger_deploy(
self,
project_name: str,
*,
branch: str | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Trigger a new deployment for a Pages project."""
return self._post(
f"/pages/projects/{project_name}/deployments",
body={"branch": branch},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
# Domain management
def add_domain(
self,
project_name: str,
*,
domain: str,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Add a custom domain to a Pages project."""
return self._post(
f"/pages/projects/{project_name}/domains",
body={"domain": domain},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
def remove_domain(
self,
project_name: str,
domain_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Remove a custom domain from a Pages project."""
return self._delete(
f"/pages/projects/{project_name}/domains/{domain_id}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
class AsyncPagesResource(AsyncAPIResource):
"""Cloudflare Pages project management service."""
@cached_property
def with_raw_response(self) -> AsyncPagesResourceWithRawResponse:
return AsyncPagesResourceWithRawResponse(self)
@cached_property
def with_streaming_response(self) -> AsyncPagesResourceWithStreamingResponse:
return AsyncPagesResourceWithStreamingResponse(self)
# Project management
async def list_projects(
self,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""List all Pages projects."""
return await self._get(
"/pages/projects",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def get_project(
self,
project_name: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Get a Pages project by name."""
return await self._get(
f"/pages/projects/{project_name}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def create_project(
self,
*,
name: str,
production_branch: str | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Create a new Pages project."""
return await self._post(
"/pages/projects",
body={"name": name, "production_branch": production_branch},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def delete_project(
self,
project_name: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Delete a Pages project."""
return await self._delete(
f"/pages/projects/{project_name}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
# Deployment management
async def list_deployments(
self,
project_name: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""List deployments for a Pages project."""
return await self._get(
f"/pages/projects/{project_name}/deployments",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def trigger_deploy(
self,
project_name: str,
*,
branch: str | NotGiven = NOT_GIVEN,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Trigger a new deployment for a Pages project."""
return await self._post(
f"/pages/projects/{project_name}/deployments",
body={"branch": branch},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
# Domain management
async def add_domain(
self,
project_name: str,
*,
domain: str,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Add a custom domain to a Pages project."""
return await self._post(
f"/pages/projects/{project_name}/domains",
body={"domain": domain},
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
async def remove_domain(
self,
project_name: str,
domain_id: str,
*,
extra_headers: Headers | None = None,
extra_query: Query | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> object:
"""Remove a custom domain from a Pages project."""
return await self._delete(
f"/pages/projects/{project_name}/domains/{domain_id}",
options=make_request_options(
extra_headers=extra_headers,
extra_query=extra_query,
extra_body=extra_body,
timeout=timeout,
),
cast_to=object,
)
class PagesResourceWithRawResponse:
def __init__(self, pages: PagesResource) -> None:
self._pages = pages
class AsyncPagesResourceWithRawResponse:
def __init__(self, pages: AsyncPagesResource) -> None:
self._pages = pages
class PagesResourceWithStreamingResponse:
def __init__(self, pages: PagesResource) -> None:
self._pages = pages
class AsyncPagesResourceWithStreamingResponse:
def __init__(self, pages: AsyncPagesResource) -> None:
self._pages = pages