Skip to main content

hanzo_client/apis/
cloudflare_api.rs

1/*
2 * Hanzo Cloud API
3 *
4 * The Hanzo Cloud API as a customer calls it: every operation under /v1/ except the operator's admin product, relay routes, legacy spellings and capabilities still reached by flag. Tagged by product: the first path segment after /v1/.
5 *
6 * The version of the OpenAPI document: v1
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11
12use reqwest;
13use serde::{Deserialize, Serialize, de::Error as _};
14use crate::{apis::ResponseContent, models};
15use super::{Error, configuration, ContentType};
16
17
18/// struct for typed errors of method [`delete_cloudflare_d1_databases_by_database`]
19#[derive(Debug, Clone, Serialize, Deserialize)]
20#[serde(untagged)]
21pub enum DeleteCloudflareD1DatabasesByDatabaseError {
22    UnknownValue(serde_json::Value),
23}
24
25/// struct for typed errors of method [`delete_cloudflare_kv_namespaces_by_namespace`]
26#[derive(Debug, Clone, Serialize, Deserialize)]
27#[serde(untagged)]
28pub enum DeleteCloudflareKvNamespacesByNamespaceError {
29    UnknownValue(serde_json::Value),
30}
31
32/// struct for typed errors of method [`delete_cloudflare_kv_namespaces_by_namespace_values_by_key`]
33#[derive(Debug, Clone, Serialize, Deserialize)]
34#[serde(untagged)]
35pub enum DeleteCloudflareKvNamespacesByNamespaceValuesByKeyError {
36    UnknownValue(serde_json::Value),
37}
38
39/// struct for typed errors of method [`delete_cloudflare_pages_projects_by_project`]
40#[derive(Debug, Clone, Serialize, Deserialize)]
41#[serde(untagged)]
42pub enum DeleteCloudflarePagesProjectsByProjectError {
43    UnknownValue(serde_json::Value),
44}
45
46/// struct for typed errors of method [`delete_cloudflare_pages_projects_by_project_domains_by_domain`]
47#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(untagged)]
49pub enum DeleteCloudflarePagesProjectsByProjectDomainsByDomainError {
50    UnknownValue(serde_json::Value),
51}
52
53/// struct for typed errors of method [`delete_cloudflare_r2_buckets_by_bucket`]
54#[derive(Debug, Clone, Serialize, Deserialize)]
55#[serde(untagged)]
56pub enum DeleteCloudflareR2BucketsByBucketError {
57    UnknownValue(serde_json::Value),
58}
59
60/// struct for typed errors of method [`delete_cloudflare_workers_scripts_by_script`]
61#[derive(Debug, Clone, Serialize, Deserialize)]
62#[serde(untagged)]
63pub enum DeleteCloudflareWorkersScriptsByScriptError {
64    UnknownValue(serde_json::Value),
65}
66
67/// struct for typed errors of method [`delete_cloudflare_workers_zones_by_zone_routes_by_route`]
68#[derive(Debug, Clone, Serialize, Deserialize)]
69#[serde(untagged)]
70pub enum DeleteCloudflareWorkersZonesByZoneRoutesByRouteError {
71    UnknownValue(serde_json::Value),
72}
73
74/// struct for typed errors of method [`get_cloudflare_d1_databases`]
75#[derive(Debug, Clone, Serialize, Deserialize)]
76#[serde(untagged)]
77pub enum GetCloudflareD1DatabasesError {
78    UnknownValue(serde_json::Value),
79}
80
81/// struct for typed errors of method [`get_cloudflare_kv_namespaces`]
82#[derive(Debug, Clone, Serialize, Deserialize)]
83#[serde(untagged)]
84pub enum GetCloudflareKvNamespacesError {
85    UnknownValue(serde_json::Value),
86}
87
88/// struct for typed errors of method [`get_cloudflare_kv_namespaces_by_namespace_values_by_key`]
89#[derive(Debug, Clone, Serialize, Deserialize)]
90#[serde(untagged)]
91pub enum GetCloudflareKvNamespacesByNamespaceValuesByKeyError {
92    UnknownValue(serde_json::Value),
93}
94
95/// struct for typed errors of method [`get_cloudflare_pages_projects`]
96#[derive(Debug, Clone, Serialize, Deserialize)]
97#[serde(untagged)]
98pub enum GetCloudflarePagesProjectsError {
99    UnknownValue(serde_json::Value),
100}
101
102/// struct for typed errors of method [`get_cloudflare_pages_projects_by_project`]
103#[derive(Debug, Clone, Serialize, Deserialize)]
104#[serde(untagged)]
105pub enum GetCloudflarePagesProjectsByProjectError {
106    UnknownValue(serde_json::Value),
107}
108
109/// struct for typed errors of method [`get_cloudflare_r2_buckets`]
110#[derive(Debug, Clone, Serialize, Deserialize)]
111#[serde(untagged)]
112pub enum GetCloudflareR2BucketsError {
113    UnknownValue(serde_json::Value),
114}
115
116/// struct for typed errors of method [`get_cloudflare_workers_scripts`]
117#[derive(Debug, Clone, Serialize, Deserialize)]
118#[serde(untagged)]
119pub enum GetCloudflareWorkersScriptsError {
120    UnknownValue(serde_json::Value),
121}
122
123/// struct for typed errors of method [`get_cloudflare_workers_subdomain`]
124#[derive(Debug, Clone, Serialize, Deserialize)]
125#[serde(untagged)]
126pub enum GetCloudflareWorkersSubdomainError {
127    UnknownValue(serde_json::Value),
128}
129
130/// struct for typed errors of method [`get_cloudflare_workers_zones_by_zone_routes`]
131#[derive(Debug, Clone, Serialize, Deserialize)]
132#[serde(untagged)]
133pub enum GetCloudflareWorkersZonesByZoneRoutesError {
134    UnknownValue(serde_json::Value),
135}
136
137/// struct for typed errors of method [`get_cloudflare_zones`]
138#[derive(Debug, Clone, Serialize, Deserialize)]
139#[serde(untagged)]
140pub enum GetCloudflareZonesError {
141    UnknownValue(serde_json::Value),
142}
143
144/// struct for typed errors of method [`get_cloudflare_zones_by_zone`]
145#[derive(Debug, Clone, Serialize, Deserialize)]
146#[serde(untagged)]
147pub enum GetCloudflareZonesByZoneError {
148    UnknownValue(serde_json::Value),
149}
150
151/// struct for typed errors of method [`get_cloudflare_zones_by_zone_analytics`]
152#[derive(Debug, Clone, Serialize, Deserialize)]
153#[serde(untagged)]
154pub enum GetCloudflareZonesByZoneAnalyticsError {
155    UnknownValue(serde_json::Value),
156}
157
158/// struct for typed errors of method [`post_cloudflare_d1_databases`]
159#[derive(Debug, Clone, Serialize, Deserialize)]
160#[serde(untagged)]
161pub enum PostCloudflareD1DatabasesError {
162    UnknownValue(serde_json::Value),
163}
164
165/// struct for typed errors of method [`post_cloudflare_d1_databases_by_database_query`]
166#[derive(Debug, Clone, Serialize, Deserialize)]
167#[serde(untagged)]
168pub enum PostCloudflareD1DatabasesByDatabaseQueryError {
169    UnknownValue(serde_json::Value),
170}
171
172/// struct for typed errors of method [`post_cloudflare_kv_namespaces`]
173#[derive(Debug, Clone, Serialize, Deserialize)]
174#[serde(untagged)]
175pub enum PostCloudflareKvNamespacesError {
176    UnknownValue(serde_json::Value),
177}
178
179/// struct for typed errors of method [`post_cloudflare_pages_projects`]
180#[derive(Debug, Clone, Serialize, Deserialize)]
181#[serde(untagged)]
182pub enum PostCloudflarePagesProjectsError {
183    UnknownValue(serde_json::Value),
184}
185
186/// struct for typed errors of method [`post_cloudflare_pages_projects_by_project_deployments`]
187#[derive(Debug, Clone, Serialize, Deserialize)]
188#[serde(untagged)]
189pub enum PostCloudflarePagesProjectsByProjectDeploymentsError {
190    UnknownValue(serde_json::Value),
191}
192
193/// struct for typed errors of method [`post_cloudflare_pages_projects_by_project_domains`]
194#[derive(Debug, Clone, Serialize, Deserialize)]
195#[serde(untagged)]
196pub enum PostCloudflarePagesProjectsByProjectDomainsError {
197    UnknownValue(serde_json::Value),
198}
199
200/// struct for typed errors of method [`post_cloudflare_r2_buckets`]
201#[derive(Debug, Clone, Serialize, Deserialize)]
202#[serde(untagged)]
203pub enum PostCloudflareR2BucketsError {
204    UnknownValue(serde_json::Value),
205}
206
207/// struct for typed errors of method [`post_cloudflare_workers_scripts_by_script_subdomain`]
208#[derive(Debug, Clone, Serialize, Deserialize)]
209#[serde(untagged)]
210pub enum PostCloudflareWorkersScriptsByScriptSubdomainError {
211    UnknownValue(serde_json::Value),
212}
213
214/// struct for typed errors of method [`post_cloudflare_workers_zones_by_zone_routes`]
215#[derive(Debug, Clone, Serialize, Deserialize)]
216#[serde(untagged)]
217pub enum PostCloudflareWorkersZonesByZoneRoutesError {
218    UnknownValue(serde_json::Value),
219}
220
221/// struct for typed errors of method [`post_cloudflare_zones_by_zone_purge`]
222#[derive(Debug, Clone, Serialize, Deserialize)]
223#[serde(untagged)]
224pub enum PostCloudflareZonesByZonePurgeError {
225    UnknownValue(serde_json::Value),
226}
227
228/// struct for typed errors of method [`put_cloudflare_kv_namespaces_by_namespace_values_by_key`]
229#[derive(Debug, Clone, Serialize, Deserialize)]
230#[serde(untagged)]
231pub enum PutCloudflareKvNamespacesByNamespaceValuesByKeyError {
232    UnknownValue(serde_json::Value),
233}
234
235/// struct for typed errors of method [`put_cloudflare_workers_scripts_by_script`]
236#[derive(Debug, Clone, Serialize, Deserialize)]
237#[serde(untagged)]
238pub enum PutCloudflareWorkersScriptsByScriptError {
239    UnknownValue(serde_json::Value),
240}
241
242
243/// Deletes a D1 database and everything stored in it. Requires org admin.
244pub async fn delete_cloudflare_d1_databases_by_database(configuration: &configuration::Configuration, database: &str) -> Result<serde_json::Value, Error<DeleteCloudflareD1DatabasesByDatabaseError>> {
245    // add a prefix to parameters to efficiently prevent name collisions
246    let p_database = database;
247
248    let uri_str = format!("{}/v1/cloudflare/d1/databases/{database}", configuration.base_path, database=crate::apis::urlencode(p_database));
249    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
250
251    if let Some(ref user_agent) = configuration.user_agent {
252        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
253    }
254    if let Some(ref token) = configuration.bearer_access_token {
255        req_builder = req_builder.bearer_auth(token.to_owned());
256    };
257
258    let req = req_builder.build()?;
259    let resp = configuration.client.execute(req).await?;
260
261    let status = resp.status();
262    let content_type = resp
263        .headers()
264        .get("content-type")
265        .and_then(|v| v.to_str().ok())
266        .unwrap_or("application/octet-stream");
267    let content_type = super::ContentType::from(content_type);
268
269    if !status.is_client_error() && !status.is_server_error() {
270        let content = resp.text().await?;
271        match content_type {
272            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
273            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
274            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
275        }
276    } else {
277        let content = resp.text().await?;
278        let entity: Option<DeleteCloudflareD1DatabasesByDatabaseError> = serde_json::from_str(&content).ok();
279        Err(Error::ResponseError(ResponseContent { status, content, entity }))
280    }
281}
282
283/// KVNamespaceDelete deletes a Workers KV namespace and every key in it. Requires org admin.
284pub async fn delete_cloudflare_kv_namespaces_by_namespace(configuration: &configuration::Configuration, namespace: &str) -> Result<serde_json::Value, Error<DeleteCloudflareKvNamespacesByNamespaceError>> {
285    // add a prefix to parameters to efficiently prevent name collisions
286    let p_namespace = namespace;
287
288    let uri_str = format!("{}/v1/cloudflare/kv/namespaces/{namespace}", configuration.base_path, namespace=crate::apis::urlencode(p_namespace));
289    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
290
291    if let Some(ref user_agent) = configuration.user_agent {
292        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
293    }
294    if let Some(ref token) = configuration.bearer_access_token {
295        req_builder = req_builder.bearer_auth(token.to_owned());
296    };
297
298    let req = req_builder.build()?;
299    let resp = configuration.client.execute(req).await?;
300
301    let status = resp.status();
302    let content_type = resp
303        .headers()
304        .get("content-type")
305        .and_then(|v| v.to_str().ok())
306        .unwrap_or("application/octet-stream");
307    let content_type = super::ContentType::from(content_type);
308
309    if !status.is_client_error() && !status.is_server_error() {
310        let content = resp.text().await?;
311        match content_type {
312            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
313            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
314            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
315        }
316    } else {
317        let content = resp.text().await?;
318        let entity: Option<DeleteCloudflareKvNamespacesByNamespaceError> = serde_json::from_str(&content).ok();
319        Err(Error::ResponseError(ResponseContent { status, content, entity }))
320    }
321}
322
323/// KVValueDelete removes one key from a Workers KV namespace. Requires org admin.
324pub async fn delete_cloudflare_kv_namespaces_by_namespace_values_by_key(configuration: &configuration::Configuration, namespace: &str, key: &str) -> Result<serde_json::Value, Error<DeleteCloudflareKvNamespacesByNamespaceValuesByKeyError>> {
325    // add a prefix to parameters to efficiently prevent name collisions
326    let p_namespace = namespace;
327    let p_key = key;
328
329    let uri_str = format!("{}/v1/cloudflare/kv/namespaces/{namespace}/values/{key}", configuration.base_path, namespace=crate::apis::urlencode(p_namespace), key=crate::apis::urlencode(p_key));
330    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
331
332    if let Some(ref user_agent) = configuration.user_agent {
333        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
334    }
335    if let Some(ref token) = configuration.bearer_access_token {
336        req_builder = req_builder.bearer_auth(token.to_owned());
337    };
338
339    let req = req_builder.build()?;
340    let resp = configuration.client.execute(req).await?;
341
342    let status = resp.status();
343    let content_type = resp
344        .headers()
345        .get("content-type")
346        .and_then(|v| v.to_str().ok())
347        .unwrap_or("application/octet-stream");
348    let content_type = super::ContentType::from(content_type);
349
350    if !status.is_client_error() && !status.is_server_error() {
351        let content = resp.text().await?;
352        match content_type {
353            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
354            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
355            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
356        }
357    } else {
358        let content = resp.text().await?;
359        let entity: Option<DeleteCloudflareKvNamespacesByNamespaceValuesByKeyError> = serde_json::from_str(&content).ok();
360        Err(Error::ResponseError(ResponseContent { status, content, entity }))
361    }
362}
363
364/// Deletes a Cloudflare Pages project, and with it every deployment it has ever made. Requires org admin.
365pub async fn delete_cloudflare_pages_projects_by_project(configuration: &configuration::Configuration, project: &str) -> Result<serde_json::Value, Error<DeleteCloudflarePagesProjectsByProjectError>> {
366    // add a prefix to parameters to efficiently prevent name collisions
367    let p_project = project;
368
369    let uri_str = format!("{}/v1/cloudflare/pages/projects/{project}", configuration.base_path, project=crate::apis::urlencode(p_project));
370    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
371
372    if let Some(ref user_agent) = configuration.user_agent {
373        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
374    }
375    if let Some(ref token) = configuration.bearer_access_token {
376        req_builder = req_builder.bearer_auth(token.to_owned());
377    };
378
379    let req = req_builder.build()?;
380    let resp = configuration.client.execute(req).await?;
381
382    let status = resp.status();
383    let content_type = resp
384        .headers()
385        .get("content-type")
386        .and_then(|v| v.to_str().ok())
387        .unwrap_or("application/octet-stream");
388    let content_type = super::ContentType::from(content_type);
389
390    if !status.is_client_error() && !status.is_server_error() {
391        let content = resp.text().await?;
392        match content_type {
393            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
394            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
395            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
396        }
397    } else {
398        let content = resp.text().await?;
399        let entity: Option<DeleteCloudflarePagesProjectsByProjectError> = serde_json::from_str(&content).ok();
400        Err(Error::ResponseError(ResponseContent { status, content, entity }))
401    }
402}
403
404/// Detaches a custom domain from a Cloudflare Pages project. Requires org admin.
405pub async fn delete_cloudflare_pages_projects_by_project_domains_by_domain(configuration: &configuration::Configuration, project: &str, domain: &str) -> Result<serde_json::Value, Error<DeleteCloudflarePagesProjectsByProjectDomainsByDomainError>> {
406    // add a prefix to parameters to efficiently prevent name collisions
407    let p_project = project;
408    let p_domain = domain;
409
410    let uri_str = format!("{}/v1/cloudflare/pages/projects/{project}/domains/{domain}", configuration.base_path, project=crate::apis::urlencode(p_project), domain=crate::apis::urlencode(p_domain));
411    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
412
413    if let Some(ref user_agent) = configuration.user_agent {
414        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
415    }
416    if let Some(ref token) = configuration.bearer_access_token {
417        req_builder = req_builder.bearer_auth(token.to_owned());
418    };
419
420    let req = req_builder.build()?;
421    let resp = configuration.client.execute(req).await?;
422
423    let status = resp.status();
424    let content_type = resp
425        .headers()
426        .get("content-type")
427        .and_then(|v| v.to_str().ok())
428        .unwrap_or("application/octet-stream");
429    let content_type = super::ContentType::from(content_type);
430
431    if !status.is_client_error() && !status.is_server_error() {
432        let content = resp.text().await?;
433        match content_type {
434            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
435            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
436            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
437        }
438    } else {
439        let content = resp.text().await?;
440        let entity: Option<DeleteCloudflarePagesProjectsByProjectDomainsByDomainError> = serde_json::from_str(&content).ok();
441        Err(Error::ResponseError(ResponseContent { status, content, entity }))
442    }
443}
444
445/// Deletes an R2 bucket. Requires org admin. Cloudflare refuses a bucket that still holds objects, and that refusal is relayed.
446pub async fn delete_cloudflare_r2_buckets_by_bucket(configuration: &configuration::Configuration, bucket: &str) -> Result<serde_json::Value, Error<DeleteCloudflareR2BucketsByBucketError>> {
447    // add a prefix to parameters to efficiently prevent name collisions
448    let p_bucket = bucket;
449
450    let uri_str = format!("{}/v1/cloudflare/r2/buckets/{bucket}", configuration.base_path, bucket=crate::apis::urlencode(p_bucket));
451    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
452
453    if let Some(ref user_agent) = configuration.user_agent {
454        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
455    }
456    if let Some(ref token) = configuration.bearer_access_token {
457        req_builder = req_builder.bearer_auth(token.to_owned());
458    };
459
460    let req = req_builder.build()?;
461    let resp = configuration.client.execute(req).await?;
462
463    let status = resp.status();
464    let content_type = resp
465        .headers()
466        .get("content-type")
467        .and_then(|v| v.to_str().ok())
468        .unwrap_or("application/octet-stream");
469    let content_type = super::ContentType::from(content_type);
470
471    if !status.is_client_error() && !status.is_server_error() {
472        let content = resp.text().await?;
473        match content_type {
474            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
475            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
476            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
477        }
478    } else {
479        let content = resp.text().await?;
480        let entity: Option<DeleteCloudflareR2BucketsByBucketError> = serde_json::from_str(&content).ok();
481        Err(Error::ResponseError(ResponseContent { status, content, entity }))
482    }
483}
484
485/// Removes a Worker script from the org's Cloudflare account. Requires org admin. Routes bound to the script stop serving it.
486pub async fn delete_cloudflare_workers_scripts_by_script(configuration: &configuration::Configuration, script: &str) -> Result<serde_json::Value, Error<DeleteCloudflareWorkersScriptsByScriptError>> {
487    // add a prefix to parameters to efficiently prevent name collisions
488    let p_script = script;
489
490    let uri_str = format!("{}/v1/cloudflare/workers/scripts/{script}", configuration.base_path, script=crate::apis::urlencode(p_script));
491    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
492
493    if let Some(ref user_agent) = configuration.user_agent {
494        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
495    }
496    if let Some(ref token) = configuration.bearer_access_token {
497        req_builder = req_builder.bearer_auth(token.to_owned());
498    };
499
500    let req = req_builder.build()?;
501    let resp = configuration.client.execute(req).await?;
502
503    let status = resp.status();
504    let content_type = resp
505        .headers()
506        .get("content-type")
507        .and_then(|v| v.to_str().ok())
508        .unwrap_or("application/octet-stream");
509    let content_type = super::ContentType::from(content_type);
510
511    if !status.is_client_error() && !status.is_server_error() {
512        let content = resp.text().await?;
513        match content_type {
514            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
515            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
516            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
517        }
518    } else {
519        let content = resp.text().await?;
520        let entity: Option<DeleteCloudflareWorkersScriptsByScriptError> = serde_json::from_str(&content).ok();
521        Err(Error::ResponseError(ResponseContent { status, content, entity }))
522    }
523}
524
525/// Unbinds a Worker route, so its pattern stops dispatching to a script. Requires org admin.
526pub async fn delete_cloudflare_workers_zones_by_zone_routes_by_route(configuration: &configuration::Configuration, zone: &str, route: &str) -> Result<serde_json::Value, Error<DeleteCloudflareWorkersZonesByZoneRoutesByRouteError>> {
527    // add a prefix to parameters to efficiently prevent name collisions
528    let p_zone = zone;
529    let p_route = route;
530
531    let uri_str = format!("{}/v1/cloudflare/workers/zones/{zone}/routes/{route}", configuration.base_path, zone=crate::apis::urlencode(p_zone), route=crate::apis::urlencode(p_route));
532    let mut req_builder = configuration.client.request(reqwest::Method::DELETE, &uri_str);
533
534    if let Some(ref user_agent) = configuration.user_agent {
535        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
536    }
537    if let Some(ref token) = configuration.bearer_access_token {
538        req_builder = req_builder.bearer_auth(token.to_owned());
539    };
540
541    let req = req_builder.build()?;
542    let resp = configuration.client.execute(req).await?;
543
544    let status = resp.status();
545    let content_type = resp
546        .headers()
547        .get("content-type")
548        .and_then(|v| v.to_str().ok())
549        .unwrap_or("application/octet-stream");
550    let content_type = super::ContentType::from(content_type);
551
552    if !status.is_client_error() && !status.is_server_error() {
553        let content = resp.text().await?;
554        match content_type {
555            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
556            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
557            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
558        }
559    } else {
560        let content = resp.text().await?;
561        let entity: Option<DeleteCloudflareWorkersZonesByZoneRoutesByRouteError> = serde_json::from_str(&content).ok();
562        Err(Error::ResponseError(ResponseContent { status, content, entity }))
563    }
564}
565
566/// Lists the D1 databases on the org's Cloudflare account. Any org member may read.
567pub async fn get_cloudflare_d1_databases(configuration: &configuration::Configuration, page: Option<&str>, per_page: Option<&str>, name: Option<&str>) -> Result<serde_json::Value, Error<GetCloudflareD1DatabasesError>> {
568    // add a prefix to parameters to efficiently prevent name collisions
569    let p_page = page;
570    let p_per_page = per_page;
571    let p_name = name;
572
573    let uri_str = format!("{}/v1/cloudflare/d1/databases", configuration.base_path);
574    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
575
576    if let Some(ref param_value) = p_page {
577        req_builder = req_builder.query(&[("page", &param_value.to_string())]);
578    }
579    if let Some(ref param_value) = p_per_page {
580        req_builder = req_builder.query(&[("per_page", &param_value.to_string())]);
581    }
582    if let Some(ref param_value) = p_name {
583        req_builder = req_builder.query(&[("name", &param_value.to_string())]);
584    }
585    if let Some(ref user_agent) = configuration.user_agent {
586        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
587    }
588    if let Some(ref token) = configuration.bearer_access_token {
589        req_builder = req_builder.bearer_auth(token.to_owned());
590    };
591
592    let req = req_builder.build()?;
593    let resp = configuration.client.execute(req).await?;
594
595    let status = resp.status();
596    let content_type = resp
597        .headers()
598        .get("content-type")
599        .and_then(|v| v.to_str().ok())
600        .unwrap_or("application/octet-stream");
601    let content_type = super::ContentType::from(content_type);
602
603    if !status.is_client_error() && !status.is_server_error() {
604        let content = resp.text().await?;
605        match content_type {
606            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
607            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
608            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
609        }
610    } else {
611        let content = resp.text().await?;
612        let entity: Option<GetCloudflareD1DatabasesError> = serde_json::from_str(&content).ok();
613        Err(Error::ResponseError(ResponseContent { status, content, entity }))
614    }
615}
616
617/// KVNamespaceList lists the Workers KV namespaces on the org's Cloudflare account. Any org member may read.
618pub async fn get_cloudflare_kv_namespaces(configuration: &configuration::Configuration, page: Option<&str>, per_page: Option<&str>, order: Option<&str>, direction: Option<&str>) -> Result<serde_json::Value, Error<GetCloudflareKvNamespacesError>> {
619    // add a prefix to parameters to efficiently prevent name collisions
620    let p_page = page;
621    let p_per_page = per_page;
622    let p_order = order;
623    let p_direction = direction;
624
625    let uri_str = format!("{}/v1/cloudflare/kv/namespaces", configuration.base_path);
626    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
627
628    if let Some(ref param_value) = p_page {
629        req_builder = req_builder.query(&[("page", &param_value.to_string())]);
630    }
631    if let Some(ref param_value) = p_per_page {
632        req_builder = req_builder.query(&[("per_page", &param_value.to_string())]);
633    }
634    if let Some(ref param_value) = p_order {
635        req_builder = req_builder.query(&[("order", &param_value.to_string())]);
636    }
637    if let Some(ref param_value) = p_direction {
638        req_builder = req_builder.query(&[("direction", &param_value.to_string())]);
639    }
640    if let Some(ref user_agent) = configuration.user_agent {
641        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
642    }
643    if let Some(ref token) = configuration.bearer_access_token {
644        req_builder = req_builder.bearer_auth(token.to_owned());
645    };
646
647    let req = req_builder.build()?;
648    let resp = configuration.client.execute(req).await?;
649
650    let status = resp.status();
651    let content_type = resp
652        .headers()
653        .get("content-type")
654        .and_then(|v| v.to_str().ok())
655        .unwrap_or("application/octet-stream");
656    let content_type = super::ContentType::from(content_type);
657
658    if !status.is_client_error() && !status.is_server_error() {
659        let content = resp.text().await?;
660        match content_type {
661            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
662            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
663            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
664        }
665    } else {
666        let content = resp.text().await?;
667        let entity: Option<GetCloudflareKvNamespacesError> = serde_json::from_str(&content).ok();
668        Err(Error::ResponseError(ResponseContent { status, content, entity }))
669    }
670}
671
672/// Answers one KV key's value from the org's OWN Cloudflare account as RAW BYTES under the content type it was written with — not wrapped in a JSON envelope, which is why this is not a typed op. Any org member may read. A key that does not exist is Cloudflare's own 404; an invalid namespace, or a key that is empty, over 512 bytes, not valid UTF-8, or carries a control character, is 400; 503 if the org has never connected a Cloudflare token.
673pub async fn get_cloudflare_kv_namespaces_by_namespace_values_by_key(configuration: &configuration::Configuration, namespace: &str, key: &str) -> Result<(), Error<GetCloudflareKvNamespacesByNamespaceValuesByKeyError>> {
674    // add a prefix to parameters to efficiently prevent name collisions
675    let p_namespace = namespace;
676    let p_key = key;
677
678    let uri_str = format!("{}/v1/cloudflare/kv/namespaces/{namespace}/values/{key}", configuration.base_path, namespace=crate::apis::urlencode(p_namespace), key=crate::apis::urlencode(p_key));
679    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
680
681    if let Some(ref user_agent) = configuration.user_agent {
682        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
683    }
684    if let Some(ref token) = configuration.bearer_access_token {
685        req_builder = req_builder.bearer_auth(token.to_owned());
686    };
687
688    let req = req_builder.build()?;
689    let resp = configuration.client.execute(req).await?;
690
691    let status = resp.status();
692
693    if !status.is_client_error() && !status.is_server_error() {
694        Ok(())
695    } else {
696        let content = resp.text().await?;
697        let entity: Option<GetCloudflareKvNamespacesByNamespaceValuesByKeyError> = serde_json::from_str(&content).ok();
698        Err(Error::ResponseError(ResponseContent { status, content, entity }))
699    }
700}
701
702/// Lists the org's Cloudflare Pages projects. Any org member may read.
703pub async fn get_cloudflare_pages_projects(configuration: &configuration::Configuration, ) -> Result<serde_json::Value, Error<GetCloudflarePagesProjectsError>> {
704
705    let uri_str = format!("{}/v1/cloudflare/pages/projects", configuration.base_path);
706    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
707
708    if let Some(ref user_agent) = configuration.user_agent {
709        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
710    }
711    if let Some(ref token) = configuration.bearer_access_token {
712        req_builder = req_builder.bearer_auth(token.to_owned());
713    };
714
715    let req = req_builder.build()?;
716    let resp = configuration.client.execute(req).await?;
717
718    let status = resp.status();
719    let content_type = resp
720        .headers()
721        .get("content-type")
722        .and_then(|v| v.to_str().ok())
723        .unwrap_or("application/octet-stream");
724    let content_type = super::ContentType::from(content_type);
725
726    if !status.is_client_error() && !status.is_server_error() {
727        let content = resp.text().await?;
728        match content_type {
729            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
730            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
731            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
732        }
733    } else {
734        let content = resp.text().await?;
735        let entity: Option<GetCloudflarePagesProjectsError> = serde_json::from_str(&content).ok();
736        Err(Error::ResponseError(ResponseContent { status, content, entity }))
737    }
738}
739
740/// Reads one Cloudflare Pages project — its build config, deployment configs and latest deployment. Any org member may read.
741pub async fn get_cloudflare_pages_projects_by_project(configuration: &configuration::Configuration, project: &str) -> Result<serde_json::Value, Error<GetCloudflarePagesProjectsByProjectError>> {
742    // add a prefix to parameters to efficiently prevent name collisions
743    let p_project = project;
744
745    let uri_str = format!("{}/v1/cloudflare/pages/projects/{project}", configuration.base_path, project=crate::apis::urlencode(p_project));
746    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
747
748    if let Some(ref user_agent) = configuration.user_agent {
749        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
750    }
751    if let Some(ref token) = configuration.bearer_access_token {
752        req_builder = req_builder.bearer_auth(token.to_owned());
753    };
754
755    let req = req_builder.build()?;
756    let resp = configuration.client.execute(req).await?;
757
758    let status = resp.status();
759    let content_type = resp
760        .headers()
761        .get("content-type")
762        .and_then(|v| v.to_str().ok())
763        .unwrap_or("application/octet-stream");
764    let content_type = super::ContentType::from(content_type);
765
766    if !status.is_client_error() && !status.is_server_error() {
767        let content = resp.text().await?;
768        match content_type {
769            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
770            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
771            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
772        }
773    } else {
774        let content = resp.text().await?;
775        let entity: Option<GetCloudflarePagesProjectsByProjectError> = serde_json::from_str(&content).ok();
776        Err(Error::ResponseError(ResponseContent { status, content, entity }))
777    }
778}
779
780/// Lists the R2 buckets on the org's Cloudflare account. Any org member may read.
781pub async fn get_cloudflare_r2_buckets(configuration: &configuration::Configuration, per_page: Option<&str>, cursor: Option<&str>, name_contains: Option<&str>, order: Option<&str>, direction: Option<&str>) -> Result<serde_json::Value, Error<GetCloudflareR2BucketsError>> {
782    // add a prefix to parameters to efficiently prevent name collisions
783    let p_per_page = per_page;
784    let p_cursor = cursor;
785    let p_name_contains = name_contains;
786    let p_order = order;
787    let p_direction = direction;
788
789    let uri_str = format!("{}/v1/cloudflare/r2/buckets", configuration.base_path);
790    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
791
792    if let Some(ref param_value) = p_per_page {
793        req_builder = req_builder.query(&[("per_page", &param_value.to_string())]);
794    }
795    if let Some(ref param_value) = p_cursor {
796        req_builder = req_builder.query(&[("cursor", &param_value.to_string())]);
797    }
798    if let Some(ref param_value) = p_name_contains {
799        req_builder = req_builder.query(&[("name_contains", &param_value.to_string())]);
800    }
801    if let Some(ref param_value) = p_order {
802        req_builder = req_builder.query(&[("order", &param_value.to_string())]);
803    }
804    if let Some(ref param_value) = p_direction {
805        req_builder = req_builder.query(&[("direction", &param_value.to_string())]);
806    }
807    if let Some(ref user_agent) = configuration.user_agent {
808        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
809    }
810    if let Some(ref token) = configuration.bearer_access_token {
811        req_builder = req_builder.bearer_auth(token.to_owned());
812    };
813
814    let req = req_builder.build()?;
815    let resp = configuration.client.execute(req).await?;
816
817    let status = resp.status();
818    let content_type = resp
819        .headers()
820        .get("content-type")
821        .and_then(|v| v.to_str().ok())
822        .unwrap_or("application/octet-stream");
823    let content_type = super::ContentType::from(content_type);
824
825    if !status.is_client_error() && !status.is_server_error() {
826        let content = resp.text().await?;
827        match content_type {
828            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
829            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
830            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
831        }
832    } else {
833        let content = resp.text().await?;
834        let entity: Option<GetCloudflareR2BucketsError> = serde_json::from_str(&content).ok();
835        Err(Error::ResponseError(ResponseContent { status, content, entity }))
836    }
837}
838
839/// Lists the Worker scripts on the org's Cloudflare account. Any org member may read.
840pub async fn get_cloudflare_workers_scripts(configuration: &configuration::Configuration, ) -> Result<serde_json::Value, Error<GetCloudflareWorkersScriptsError>> {
841
842    let uri_str = format!("{}/v1/cloudflare/workers/scripts", configuration.base_path);
843    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
844
845    if let Some(ref user_agent) = configuration.user_agent {
846        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
847    }
848    if let Some(ref token) = configuration.bearer_access_token {
849        req_builder = req_builder.bearer_auth(token.to_owned());
850    };
851
852    let req = req_builder.build()?;
853    let resp = configuration.client.execute(req).await?;
854
855    let status = resp.status();
856    let content_type = resp
857        .headers()
858        .get("content-type")
859        .and_then(|v| v.to_str().ok())
860        .unwrap_or("application/octet-stream");
861    let content_type = super::ContentType::from(content_type);
862
863    if !status.is_client_error() && !status.is_server_error() {
864        let content = resp.text().await?;
865        match content_type {
866            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
867            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
868            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
869        }
870    } else {
871        let content = resp.text().await?;
872        let entity: Option<GetCloudflareWorkersScriptsError> = serde_json::from_str(&content).ok();
873        Err(Error::ResponseError(ResponseContent { status, content, entity }))
874    }
875}
876
877/// Reads the org account's workers.dev subdomain — the name under which every subdomain-enabled script is served. Any org member may read.
878pub async fn get_cloudflare_workers_subdomain(configuration: &configuration::Configuration, ) -> Result<serde_json::Value, Error<GetCloudflareWorkersSubdomainError>> {
879
880    let uri_str = format!("{}/v1/cloudflare/workers/subdomain", configuration.base_path);
881    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
882
883    if let Some(ref user_agent) = configuration.user_agent {
884        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
885    }
886    if let Some(ref token) = configuration.bearer_access_token {
887        req_builder = req_builder.bearer_auth(token.to_owned());
888    };
889
890    let req = req_builder.build()?;
891    let resp = configuration.client.execute(req).await?;
892
893    let status = resp.status();
894    let content_type = resp
895        .headers()
896        .get("content-type")
897        .and_then(|v| v.to_str().ok())
898        .unwrap_or("application/octet-stream");
899    let content_type = super::ContentType::from(content_type);
900
901    if !status.is_client_error() && !status.is_server_error() {
902        let content = resp.text().await?;
903        match content_type {
904            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
905            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
906            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
907        }
908    } else {
909        let content = resp.text().await?;
910        let entity: Option<GetCloudflareWorkersSubdomainError> = serde_json::from_str(&content).ok();
911        Err(Error::ResponseError(ResponseContent { status, content, entity }))
912    }
913}
914
915/// Lists the Worker routes bound within one zone — the URL patterns that dispatch to a script. Any org member may read. Routes are zone-scoped, so no account is resolved.
916pub async fn get_cloudflare_workers_zones_by_zone_routes(configuration: &configuration::Configuration, zone: &str) -> Result<serde_json::Value, Error<GetCloudflareWorkersZonesByZoneRoutesError>> {
917    // add a prefix to parameters to efficiently prevent name collisions
918    let p_zone = zone;
919
920    let uri_str = format!("{}/v1/cloudflare/workers/zones/{zone}/routes", configuration.base_path, zone=crate::apis::urlencode(p_zone));
921    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
922
923    if let Some(ref user_agent) = configuration.user_agent {
924        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
925    }
926    if let Some(ref token) = configuration.bearer_access_token {
927        req_builder = req_builder.bearer_auth(token.to_owned());
928    };
929
930    let req = req_builder.build()?;
931    let resp = configuration.client.execute(req).await?;
932
933    let status = resp.status();
934    let content_type = resp
935        .headers()
936        .get("content-type")
937        .and_then(|v| v.to_str().ok())
938        .unwrap_or("application/octet-stream");
939    let content_type = super::ContentType::from(content_type);
940
941    if !status.is_client_error() && !status.is_server_error() {
942        let content = resp.text().await?;
943        match content_type {
944            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
945            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
946            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
947        }
948    } else {
949        let content = resp.text().await?;
950        let entity: Option<GetCloudflareWorkersZonesByZoneRoutesError> = serde_json::from_str(&content).ok();
951        Err(Error::ResponseError(ResponseContent { status, content, entity }))
952    }
953}
954
955/// Lists the Cloudflare zones the org's connected API token can see, paged and filtered by the query parameters Cloudflare itself accepts. Zones are token-scoped by Cloudflare, so no account is resolved. Any org member may read.  Zone and DNS-record MANAGEMENT is not here: it stays on the Hanzo DNS plane (/v1/dns). This only surfaces the Cloudflare zone objects the asset plane needs — a zone id is what addresses a Worker route or an analytics read.
956pub async fn get_cloudflare_zones(configuration: &configuration::Configuration, page: Option<&str>, per_page: Option<&str>, name: Option<&str>, status: Option<&str>, order: Option<&str>, direction: Option<&str>) -> Result<serde_json::Value, Error<GetCloudflareZonesError>> {
957    // add a prefix to parameters to efficiently prevent name collisions
958    let p_page = page;
959    let p_per_page = per_page;
960    let p_name = name;
961    let p_status = status;
962    let p_order = order;
963    let p_direction = direction;
964
965    let uri_str = format!("{}/v1/cloudflare/zones", configuration.base_path);
966    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
967
968    if let Some(ref param_value) = p_page {
969        req_builder = req_builder.query(&[("page", &param_value.to_string())]);
970    }
971    if let Some(ref param_value) = p_per_page {
972        req_builder = req_builder.query(&[("per_page", &param_value.to_string())]);
973    }
974    if let Some(ref param_value) = p_name {
975        req_builder = req_builder.query(&[("name", &param_value.to_string())]);
976    }
977    if let Some(ref param_value) = p_status {
978        req_builder = req_builder.query(&[("status", &param_value.to_string())]);
979    }
980    if let Some(ref param_value) = p_order {
981        req_builder = req_builder.query(&[("order", &param_value.to_string())]);
982    }
983    if let Some(ref param_value) = p_direction {
984        req_builder = req_builder.query(&[("direction", &param_value.to_string())]);
985    }
986    if let Some(ref user_agent) = configuration.user_agent {
987        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
988    }
989    if let Some(ref token) = configuration.bearer_access_token {
990        req_builder = req_builder.bearer_auth(token.to_owned());
991    };
992
993    let req = req_builder.build()?;
994    let resp = configuration.client.execute(req).await?;
995
996    let status = resp.status();
997    let content_type = resp
998        .headers()
999        .get("content-type")
1000        .and_then(|v| v.to_str().ok())
1001        .unwrap_or("application/octet-stream");
1002    let content_type = super::ContentType::from(content_type);
1003
1004    if !status.is_client_error() && !status.is_server_error() {
1005        let content = resp.text().await?;
1006        match content_type {
1007            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1008            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1009            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1010        }
1011    } else {
1012        let content = resp.text().await?;
1013        let entity: Option<GetCloudflareZonesError> = serde_json::from_str(&content).ok();
1014        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1015    }
1016}
1017
1018/// Reads one Cloudflare zone the org's token can see. Any org member may read. A zone id the token cannot see is Cloudflare's own not-found, relayed.
1019pub async fn get_cloudflare_zones_by_zone(configuration: &configuration::Configuration, zone: &str) -> Result<serde_json::Value, Error<GetCloudflareZonesByZoneError>> {
1020    // add a prefix to parameters to efficiently prevent name collisions
1021    let p_zone = zone;
1022
1023    let uri_str = format!("{}/v1/cloudflare/zones/{zone}", configuration.base_path, zone=crate::apis::urlencode(p_zone));
1024    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
1025
1026    if let Some(ref user_agent) = configuration.user_agent {
1027        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1028    }
1029    if let Some(ref token) = configuration.bearer_access_token {
1030        req_builder = req_builder.bearer_auth(token.to_owned());
1031    };
1032
1033    let req = req_builder.build()?;
1034    let resp = configuration.client.execute(req).await?;
1035
1036    let status = resp.status();
1037    let content_type = resp
1038        .headers()
1039        .get("content-type")
1040        .and_then(|v| v.to_str().ok())
1041        .unwrap_or("application/octet-stream");
1042    let content_type = super::ContentType::from(content_type);
1043
1044    if !status.is_client_error() && !status.is_server_error() {
1045        let content = resp.text().await?;
1046        match content_type {
1047            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1048            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1049            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1050        }
1051    } else {
1052        let content = resp.text().await?;
1053        let entity: Option<GetCloudflareZonesByZoneError> = serde_json::from_str(&content).ok();
1054        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1055    }
1056}
1057
1058/// Reads a zone's Cloudflare traffic dashboard — requests, bandwidth, threats and pageviews over the since/until window. Any org member may read.  A zone whose Cloudflare plan does not serve this endpoint yields Cloudflare's OWN error, never a fabricated success.
1059pub async fn get_cloudflare_zones_by_zone_analytics(configuration: &configuration::Configuration, zone: &str, since: Option<&str>, until: Option<&str>, continuous: Option<&str>) -> Result<serde_json::Value, Error<GetCloudflareZonesByZoneAnalyticsError>> {
1060    // add a prefix to parameters to efficiently prevent name collisions
1061    let p_zone = zone;
1062    let p_since = since;
1063    let p_until = until;
1064    let p_continuous = continuous;
1065
1066    let uri_str = format!("{}/v1/cloudflare/zones/{zone}/analytics", configuration.base_path, zone=crate::apis::urlencode(p_zone));
1067    let mut req_builder = configuration.client.request(reqwest::Method::GET, &uri_str);
1068
1069    if let Some(ref param_value) = p_since {
1070        req_builder = req_builder.query(&[("since", &param_value.to_string())]);
1071    }
1072    if let Some(ref param_value) = p_until {
1073        req_builder = req_builder.query(&[("until", &param_value.to_string())]);
1074    }
1075    if let Some(ref param_value) = p_continuous {
1076        req_builder = req_builder.query(&[("continuous", &param_value.to_string())]);
1077    }
1078    if let Some(ref user_agent) = configuration.user_agent {
1079        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1080    }
1081    if let Some(ref token) = configuration.bearer_access_token {
1082        req_builder = req_builder.bearer_auth(token.to_owned());
1083    };
1084
1085    let req = req_builder.build()?;
1086    let resp = configuration.client.execute(req).await?;
1087
1088    let status = resp.status();
1089    let content_type = resp
1090        .headers()
1091        .get("content-type")
1092        .and_then(|v| v.to_str().ok())
1093        .unwrap_or("application/octet-stream");
1094    let content_type = super::ContentType::from(content_type);
1095
1096    if !status.is_client_error() && !status.is_server_error() {
1097        let content = resp.text().await?;
1098        match content_type {
1099            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1100            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1101            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1102        }
1103    } else {
1104        let content = resp.text().await?;
1105        let entity: Option<GetCloudflareZonesByZoneAnalyticsError> = serde_json::from_str(&content).ok();
1106        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1107    }
1108}
1109
1110/// Creates a D1 database on the org's Cloudflare account. Requires org admin.
1111pub async fn post_cloudflare_d1_databases(configuration: &configuration::Configuration, database_create_in: models::DatabaseCreateIn) -> Result<serde_json::Value, Error<PostCloudflareD1DatabasesError>> {
1112    // add a prefix to parameters to efficiently prevent name collisions
1113    let p_database_create_in = database_create_in;
1114
1115    let uri_str = format!("{}/v1/cloudflare/d1/databases", configuration.base_path);
1116    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1117
1118    if let Some(ref user_agent) = configuration.user_agent {
1119        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1120    }
1121    if let Some(ref token) = configuration.bearer_access_token {
1122        req_builder = req_builder.bearer_auth(token.to_owned());
1123    };
1124    req_builder = req_builder.json(&p_database_create_in);
1125
1126    let req = req_builder.build()?;
1127    let resp = configuration.client.execute(req).await?;
1128
1129    let status = resp.status();
1130    let content_type = resp
1131        .headers()
1132        .get("content-type")
1133        .and_then(|v| v.to_str().ok())
1134        .unwrap_or("application/octet-stream");
1135    let content_type = super::ContentType::from(content_type);
1136
1137    if !status.is_client_error() && !status.is_server_error() {
1138        let content = resp.text().await?;
1139        match content_type {
1140            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1141            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1142            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1143        }
1144    } else {
1145        let content = resp.text().await?;
1146        let entity: Option<PostCloudflareD1DatabasesError> = serde_json::from_str(&content).ok();
1147        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1148    }
1149}
1150
1151/// Runs one SQL statement against a D1 database. It executes on the org's OWN Cloudflare account and relays D1's result set. The body is checked for a non-empty `sql` and then forwarded VERBATIM, so every field D1 accepts reaches D1 even though only two are named here.  Requires ORG ADMIN — a statement may INSERT, UPDATE or DROP, so a query takes the write gate rather than the read one — and a caller who is only an org member is refused 403. A missing `sql` is 400; 503 if the org has never connected a Cloudflare token.
1152pub async fn post_cloudflare_d1_databases_by_database_query(configuration: &configuration::Configuration, database: &str, d1_query: models::D1Query) -> Result<serde_json::Value, Error<PostCloudflareD1DatabasesByDatabaseQueryError>> {
1153    // add a prefix to parameters to efficiently prevent name collisions
1154    let p_database = database;
1155    let p_d1_query = d1_query;
1156
1157    let uri_str = format!("{}/v1/cloudflare/d1/databases/{database}/query", configuration.base_path, database=crate::apis::urlencode(p_database));
1158    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1159
1160    if let Some(ref user_agent) = configuration.user_agent {
1161        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1162    }
1163    if let Some(ref token) = configuration.bearer_access_token {
1164        req_builder = req_builder.bearer_auth(token.to_owned());
1165    };
1166    req_builder = req_builder.json(&p_d1_query);
1167
1168    let req = req_builder.build()?;
1169    let resp = configuration.client.execute(req).await?;
1170
1171    let status = resp.status();
1172    let content_type = resp
1173        .headers()
1174        .get("content-type")
1175        .and_then(|v| v.to_str().ok())
1176        .unwrap_or("application/octet-stream");
1177    let content_type = super::ContentType::from(content_type);
1178
1179    if !status.is_client_error() && !status.is_server_error() {
1180        let content = resp.text().await?;
1181        match content_type {
1182            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1183            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1184            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1185        }
1186    } else {
1187        let content = resp.text().await?;
1188        let entity: Option<PostCloudflareD1DatabasesByDatabaseQueryError> = serde_json::from_str(&content).ok();
1189        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1190    }
1191}
1192
1193/// KVNamespaceCreate creates a Workers KV namespace on the org's Cloudflare account. Requires org admin. Cloudflare mints the namespace id the value routes address.
1194pub async fn post_cloudflare_kv_namespaces(configuration: &configuration::Configuration, namespace_create_in: models::NamespaceCreateIn) -> Result<serde_json::Value, Error<PostCloudflareKvNamespacesError>> {
1195    // add a prefix to parameters to efficiently prevent name collisions
1196    let p_namespace_create_in = namespace_create_in;
1197
1198    let uri_str = format!("{}/v1/cloudflare/kv/namespaces", configuration.base_path);
1199    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1200
1201    if let Some(ref user_agent) = configuration.user_agent {
1202        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1203    }
1204    if let Some(ref token) = configuration.bearer_access_token {
1205        req_builder = req_builder.bearer_auth(token.to_owned());
1206    };
1207    req_builder = req_builder.json(&p_namespace_create_in);
1208
1209    let req = req_builder.build()?;
1210    let resp = configuration.client.execute(req).await?;
1211
1212    let status = resp.status();
1213    let content_type = resp
1214        .headers()
1215        .get("content-type")
1216        .and_then(|v| v.to_str().ok())
1217        .unwrap_or("application/octet-stream");
1218    let content_type = super::ContentType::from(content_type);
1219
1220    if !status.is_client_error() && !status.is_server_error() {
1221        let content = resp.text().await?;
1222        match content_type {
1223            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1224            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1225            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1226        }
1227    } else {
1228        let content = resp.text().await?;
1229        let entity: Option<PostCloudflareKvNamespacesError> = serde_json::from_str(&content).ok();
1230        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1231    }
1232}
1233
1234/// Creates a Cloudflare Pages project on the org's account. Requires org admin. Only the modeled fields reach Cloudflare, so an unmodeled key in the request is dropped rather than forwarded.
1235pub async fn post_cloudflare_pages_projects(configuration: &configuration::Configuration, pages_project_create: models::PagesProjectCreate) -> Result<serde_json::Value, Error<PostCloudflarePagesProjectsError>> {
1236    // add a prefix to parameters to efficiently prevent name collisions
1237    let p_pages_project_create = pages_project_create;
1238
1239    let uri_str = format!("{}/v1/cloudflare/pages/projects", configuration.base_path);
1240    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1241
1242    if let Some(ref user_agent) = configuration.user_agent {
1243        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1244    }
1245    if let Some(ref token) = configuration.bearer_access_token {
1246        req_builder = req_builder.bearer_auth(token.to_owned());
1247    };
1248    req_builder = req_builder.json(&p_pages_project_create);
1249
1250    let req = req_builder.build()?;
1251    let resp = configuration.client.execute(req).await?;
1252
1253    let status = resp.status();
1254    let content_type = resp
1255        .headers()
1256        .get("content-type")
1257        .and_then(|v| v.to_str().ok())
1258        .unwrap_or("application/octet-stream");
1259    let content_type = super::ContentType::from(content_type);
1260
1261    if !status.is_client_error() && !status.is_server_error() {
1262        let content = resp.text().await?;
1263        match content_type {
1264            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1265            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1266            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1267        }
1268    } else {
1269        let content = resp.text().await?;
1270        let entity: Option<PostCloudflarePagesProjectsError> = serde_json::from_str(&content).ok();
1271        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1272    }
1273}
1274
1275/// Starts a build and deployment of one Cloudflare Pages project on the org's OWN Cloudflare account, and relays Cloudflare's deployment record back. `branch` picks what to build; OMITTING it builds the project's production branch.  A body it cannot parse is IGNORED rather than refused — the deployment falls back to the production branch — which is the one rule to get right here and the reason this is not a typed op: a typed request would answer 400 where this deploys. Requires ORG ADMIN (403 otherwise), and 503 if the org has never connected a Cloudflare token.
1276pub async fn post_cloudflare_pages_projects_by_project_deployments(configuration: &configuration::Configuration, project: &str, pages_deploy: Option<models::PagesDeploy>) -> Result<serde_json::Value, Error<PostCloudflarePagesProjectsByProjectDeploymentsError>> {
1277    // add a prefix to parameters to efficiently prevent name collisions
1278    let p_project = project;
1279    let p_pages_deploy = pages_deploy;
1280
1281    let uri_str = format!("{}/v1/cloudflare/pages/projects/{project}/deployments", configuration.base_path, project=crate::apis::urlencode(p_project));
1282    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1283
1284    if let Some(ref user_agent) = configuration.user_agent {
1285        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1286    }
1287    if let Some(ref token) = configuration.bearer_access_token {
1288        req_builder = req_builder.bearer_auth(token.to_owned());
1289    };
1290    req_builder = req_builder.json(&p_pages_deploy);
1291
1292    let req = req_builder.build()?;
1293    let resp = configuration.client.execute(req).await?;
1294
1295    let status = resp.status();
1296    let content_type = resp
1297        .headers()
1298        .get("content-type")
1299        .and_then(|v| v.to_str().ok())
1300        .unwrap_or("application/octet-stream");
1301    let content_type = super::ContentType::from(content_type);
1302
1303    if !status.is_client_error() && !status.is_server_error() {
1304        let content = resp.text().await?;
1305        match content_type {
1306            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1307            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1308            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1309        }
1310    } else {
1311        let content = resp.text().await?;
1312        let entity: Option<PostCloudflarePagesProjectsByProjectDeploymentsError> = serde_json::from_str(&content).ok();
1313        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1314    }
1315}
1316
1317/// Attaches a custom domain to a Cloudflare Pages project. Requires org admin. Cloudflare owns validation and certificate issuance from here on.
1318pub async fn post_cloudflare_pages_projects_by_project_domains(configuration: &configuration::Configuration, project: &str, domain_add_in: models::DomainAddIn) -> Result<serde_json::Value, Error<PostCloudflarePagesProjectsByProjectDomainsError>> {
1319    // add a prefix to parameters to efficiently prevent name collisions
1320    let p_project = project;
1321    let p_domain_add_in = domain_add_in;
1322
1323    let uri_str = format!("{}/v1/cloudflare/pages/projects/{project}/domains", configuration.base_path, project=crate::apis::urlencode(p_project));
1324    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1325
1326    if let Some(ref user_agent) = configuration.user_agent {
1327        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1328    }
1329    if let Some(ref token) = configuration.bearer_access_token {
1330        req_builder = req_builder.bearer_auth(token.to_owned());
1331    };
1332    req_builder = req_builder.json(&p_domain_add_in);
1333
1334    let req = req_builder.build()?;
1335    let resp = configuration.client.execute(req).await?;
1336
1337    let status = resp.status();
1338    let content_type = resp
1339        .headers()
1340        .get("content-type")
1341        .and_then(|v| v.to_str().ok())
1342        .unwrap_or("application/octet-stream");
1343    let content_type = super::ContentType::from(content_type);
1344
1345    if !status.is_client_error() && !status.is_server_error() {
1346        let content = resp.text().await?;
1347        match content_type {
1348            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1349            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1350            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1351        }
1352    } else {
1353        let content = resp.text().await?;
1354        let entity: Option<PostCloudflarePagesProjectsByProjectDomainsError> = serde_json::from_str(&content).ok();
1355        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1356    }
1357}
1358
1359/// Creates an R2 bucket on the org's Cloudflare account. Requires org admin.
1360pub async fn post_cloudflare_r2_buckets(configuration: &configuration::Configuration, bucket_create_in: models::BucketCreateIn) -> Result<serde_json::Value, Error<PostCloudflareR2BucketsError>> {
1361    // add a prefix to parameters to efficiently prevent name collisions
1362    let p_bucket_create_in = bucket_create_in;
1363
1364    let uri_str = format!("{}/v1/cloudflare/r2/buckets", configuration.base_path);
1365    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1366
1367    if let Some(ref user_agent) = configuration.user_agent {
1368        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1369    }
1370    if let Some(ref token) = configuration.bearer_access_token {
1371        req_builder = req_builder.bearer_auth(token.to_owned());
1372    };
1373    req_builder = req_builder.json(&p_bucket_create_in);
1374
1375    let req = req_builder.build()?;
1376    let resp = configuration.client.execute(req).await?;
1377
1378    let status = resp.status();
1379    let content_type = resp
1380        .headers()
1381        .get("content-type")
1382        .and_then(|v| v.to_str().ok())
1383        .unwrap_or("application/octet-stream");
1384    let content_type = super::ContentType::from(content_type);
1385
1386    if !status.is_client_error() && !status.is_server_error() {
1387        let content = resp.text().await?;
1388        match content_type {
1389            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1390            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1391            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1392        }
1393    } else {
1394        let content = resp.text().await?;
1395        let entity: Option<PostCloudflareR2BucketsError> = serde_json::from_str(&content).ok();
1396        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1397    }
1398}
1399
1400/// Publishes or withdraws one Worker script on the account's workers.dev subdomain. Requires org admin.
1401pub async fn post_cloudflare_workers_scripts_by_script_subdomain(configuration: &configuration::Configuration, script: &str, subdomain_set_in: models::SubdomainSetIn) -> Result<serde_json::Value, Error<PostCloudflareWorkersScriptsByScriptSubdomainError>> {
1402    // add a prefix to parameters to efficiently prevent name collisions
1403    let p_script = script;
1404    let p_subdomain_set_in = subdomain_set_in;
1405
1406    let uri_str = format!("{}/v1/cloudflare/workers/scripts/{script}/subdomain", configuration.base_path, script=crate::apis::urlencode(p_script));
1407    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1408
1409    if let Some(ref user_agent) = configuration.user_agent {
1410        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1411    }
1412    if let Some(ref token) = configuration.bearer_access_token {
1413        req_builder = req_builder.bearer_auth(token.to_owned());
1414    };
1415    req_builder = req_builder.json(&p_subdomain_set_in);
1416
1417    let req = req_builder.build()?;
1418    let resp = configuration.client.execute(req).await?;
1419
1420    let status = resp.status();
1421    let content_type = resp
1422        .headers()
1423        .get("content-type")
1424        .and_then(|v| v.to_str().ok())
1425        .unwrap_or("application/octet-stream");
1426    let content_type = super::ContentType::from(content_type);
1427
1428    if !status.is_client_error() && !status.is_server_error() {
1429        let content = resp.text().await?;
1430        match content_type {
1431            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1432            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1433            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1434        }
1435    } else {
1436        let content = resp.text().await?;
1437        let entity: Option<PostCloudflareWorkersScriptsByScriptSubdomainError> = serde_json::from_str(&content).ok();
1438        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1439    }
1440}
1441
1442/// Binds a URL pattern in a zone to a Worker script. Requires org admin — a route is what puts a script in front of live traffic.
1443pub async fn post_cloudflare_workers_zones_by_zone_routes(configuration: &configuration::Configuration, zone: &str, route_create_in: models::RouteCreateIn) -> Result<serde_json::Value, Error<PostCloudflareWorkersZonesByZoneRoutesError>> {
1444    // add a prefix to parameters to efficiently prevent name collisions
1445    let p_zone = zone;
1446    let p_route_create_in = route_create_in;
1447
1448    let uri_str = format!("{}/v1/cloudflare/workers/zones/{zone}/routes", configuration.base_path, zone=crate::apis::urlencode(p_zone));
1449    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1450
1451    if let Some(ref user_agent) = configuration.user_agent {
1452        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1453    }
1454    if let Some(ref token) = configuration.bearer_access_token {
1455        req_builder = req_builder.bearer_auth(token.to_owned());
1456    };
1457    req_builder = req_builder.json(&p_route_create_in);
1458
1459    let req = req_builder.build()?;
1460    let resp = configuration.client.execute(req).await?;
1461
1462    let status = resp.status();
1463    let content_type = resp
1464        .headers()
1465        .get("content-type")
1466        .and_then(|v| v.to_str().ok())
1467        .unwrap_or("application/octet-stream");
1468    let content_type = super::ContentType::from(content_type);
1469
1470    if !status.is_client_error() && !status.is_server_error() {
1471        let content = resp.text().await?;
1472        match content_type {
1473            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1474            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1475            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1476        }
1477    } else {
1478        let content = resp.text().await?;
1479        let entity: Option<PostCloudflareWorkersZonesByZoneRoutesError> = serde_json::from_str(&content).ok();
1480        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1481    }
1482}
1483
1484/// Drops a zone's Cloudflare edge cache — either the whole zone (purge_everything) or exactly the listed file URLs. Requires org admin.  Purging is the one zone-scoped WRITE this plane owns. It is not DNS — no record changes — so it does not belong on /v1/dns, and it is not a connection, so it does not belong on the integrations plane. It is a cache operation on a zone, which is what this asset plane is for. It takes the admin gate because dropping a zone's cache sends every subsequent request to the origin: on a site fronting a small origin that is a self-inflicted load spike, so it is a change, not a look.  Exactly one selector is required. Cloudflare treats a body with neither as a no-op and answers 200, which reads as \"purged\" to a caller that never purged anything — the failure we refuse to pass through.
1485pub async fn post_cloudflare_zones_by_zone_purge(configuration: &configuration::Configuration, zone: &str, purge_in: models::PurgeIn) -> Result<serde_json::Value, Error<PostCloudflareZonesByZonePurgeError>> {
1486    // add a prefix to parameters to efficiently prevent name collisions
1487    let p_zone = zone;
1488    let p_purge_in = purge_in;
1489
1490    let uri_str = format!("{}/v1/cloudflare/zones/{zone}/purge", configuration.base_path, zone=crate::apis::urlencode(p_zone));
1491    let mut req_builder = configuration.client.request(reqwest::Method::POST, &uri_str);
1492
1493    if let Some(ref user_agent) = configuration.user_agent {
1494        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1495    }
1496    if let Some(ref token) = configuration.bearer_access_token {
1497        req_builder = req_builder.bearer_auth(token.to_owned());
1498    };
1499    req_builder = req_builder.json(&p_purge_in);
1500
1501    let req = req_builder.build()?;
1502    let resp = configuration.client.execute(req).await?;
1503
1504    let status = resp.status();
1505    let content_type = resp
1506        .headers()
1507        .get("content-type")
1508        .and_then(|v| v.to_str().ok())
1509        .unwrap_or("application/octet-stream");
1510    let content_type = super::ContentType::from(content_type);
1511
1512    if !status.is_client_error() && !status.is_server_error() {
1513        let content = resp.text().await?;
1514        match content_type {
1515            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1516            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1517            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1518        }
1519    } else {
1520        let content = resp.text().await?;
1521        let entity: Option<PostCloudflareZonesByZonePurgeError> = serde_json::from_str(&content).ok();
1522        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1523    }
1524}
1525
1526/// Stores one KV key on the org's OWN Cloudflare account. The REQUEST BODY IS THE VALUE, forwarded verbatim under the caller's own Content-Type (`text/plain` when none is sent), so a value is never re-encoded on the way in — which is why this is not a typed op. `expiration` and `expiration_ttl` may ride the query string and are passed through to Cloudflare. Requires ORG ADMIN (403 otherwise); the same namespace and key validation as the read answers 400; 503 if the org has never connected a Cloudflare token.
1527pub async fn put_cloudflare_kv_namespaces_by_namespace_values_by_key(configuration: &configuration::Configuration, namespace: &str, key: &str) -> Result<(), Error<PutCloudflareKvNamespacesByNamespaceValuesByKeyError>> {
1528    // add a prefix to parameters to efficiently prevent name collisions
1529    let p_namespace = namespace;
1530    let p_key = key;
1531
1532    let uri_str = format!("{}/v1/cloudflare/kv/namespaces/{namespace}/values/{key}", configuration.base_path, namespace=crate::apis::urlencode(p_namespace), key=crate::apis::urlencode(p_key));
1533    let mut req_builder = configuration.client.request(reqwest::Method::PUT, &uri_str);
1534
1535    if let Some(ref user_agent) = configuration.user_agent {
1536        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1537    }
1538    if let Some(ref token) = configuration.bearer_access_token {
1539        req_builder = req_builder.bearer_auth(token.to_owned());
1540    };
1541
1542    let req = req_builder.build()?;
1543    let resp = configuration.client.execute(req).await?;
1544
1545    let status = resp.status();
1546
1547    if !status.is_client_error() && !status.is_server_error() {
1548        Ok(())
1549    } else {
1550        let content = resp.text().await?;
1551        let entity: Option<PutCloudflareKvNamespacesByNamespaceValuesByKeyError> = serde_json::from_str(&content).ok();
1552        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1553    }
1554}
1555
1556/// Uploads or replaces a module Worker script. It publishes to the org's OWN Cloudflare account under the name in the path, replacing whatever was there, and relays Cloudflare's result. The compatibility date, compatibility flags and bindings are packed into the multipart upload Cloudflare expects, beside the module source.  Requires ORG ADMIN — a Worker is arbitrary code on the org's own account and domains — so a caller who is only an org member is refused 403. An empty source is 400, as is a `mainModule` that is not a plain file name; 503 if the org has never connected a Cloudflare token.
1557pub async fn put_cloudflare_workers_scripts_by_script(configuration: &configuration::Configuration, script: &str, worker_script_put: models::WorkerScriptPut) -> Result<serde_json::Value, Error<PutCloudflareWorkersScriptsByScriptError>> {
1558    // add a prefix to parameters to efficiently prevent name collisions
1559    let p_script = script;
1560    let p_worker_script_put = worker_script_put;
1561
1562    let uri_str = format!("{}/v1/cloudflare/workers/scripts/{script}", configuration.base_path, script=crate::apis::urlencode(p_script));
1563    let mut req_builder = configuration.client.request(reqwest::Method::PUT, &uri_str);
1564
1565    if let Some(ref user_agent) = configuration.user_agent {
1566        req_builder = req_builder.header(reqwest::header::USER_AGENT, user_agent.clone());
1567    }
1568    if let Some(ref token) = configuration.bearer_access_token {
1569        req_builder = req_builder.bearer_auth(token.to_owned());
1570    };
1571    req_builder = req_builder.json(&p_worker_script_put);
1572
1573    let req = req_builder.build()?;
1574    let resp = configuration.client.execute(req).await?;
1575
1576    let status = resp.status();
1577    let content_type = resp
1578        .headers()
1579        .get("content-type")
1580        .and_then(|v| v.to_str().ok())
1581        .unwrap_or("application/octet-stream");
1582    let content_type = super::ContentType::from(content_type);
1583
1584    if !status.is_client_error() && !status.is_server_error() {
1585        let content = resp.text().await?;
1586        match content_type {
1587            ContentType::Json => serde_json::from_str(&content).map_err(Error::from),
1588            ContentType::Text => return Err(Error::from(serde_json::Error::custom("Received `text/plain` content type response that cannot be converted to `serde_json::Value`"))),
1589            ContentType::Unsupported(unknown_type) => return Err(Error::from(serde_json::Error::custom(format!("Received `{unknown_type}` content type response that cannot be converted to `serde_json::Value`")))),
1590        }
1591    } else {
1592        let content = resp.text().await?;
1593        let entity: Option<PutCloudflareWorkersScriptsByScriptError> = serde_json::from_str(&content).ok();
1594        Err(Error::ResponseError(ResponseContent { status, content, entity }))
1595    }
1596}
1597