cloudflare/cloudflare-typescript

Public

mirrored fromhttps://github.com/cloudflare/cloudflare-typescriptAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
jacobbednarz-patch-1

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/index.ts

492lines · modecode

1// File generated from our OpenAPI spec by Stainless.
2
3import * as Core from './core';
4import * as Errors from './error';
5import { type Agent } from './_shims/index';
6import * as Uploads from './uploads';
7import * as qs from 'qs';
8import * as API from 'cloudflare/resources/index';
9
10export interface ClientOptions {
11 /**
12 * Defaults to process.env['CLOUDFLARE_API_KEY'].
13 */
14 apiKey?: string | undefined;
15
16 /**
17 * Defaults to process.env['CLOUDFLARE_EMAIL'].
18 */
19 apiEmail?: string | undefined;
20
21 /**
22 * Defaults to process.env['CLOUDFLARE_API_TOKEN'].
23 */
24 apiToken?: string | undefined;
25
26 userServiceKey: string;
27
28 /**
29 * Override the default base URL for the API, e.g., "https://api.example.com/v2/"
30 *
31 * Defaults to process.env['CLOUDFLARE_BASE_URL'].
32 */
33 baseURL?: string | null | undefined;
34
35 /**
36 * The maximum amount of time (in milliseconds) that the client should wait for a response
37 * from the server before timing out a single request.
38 *
39 * Note that request timeouts are retried by default, so in a worst-case scenario you may wait
40 * much longer than this timeout before the promise succeeds or fails.
41 */
42 timeout?: number;
43
44 /**
45 * An HTTP agent used to manage HTTP(S) connections.
46 *
47 * If not provided, an agent will be constructed by default in the Node.js environment,
48 * otherwise no agent is used.
49 */
50 httpAgent?: Agent;
51
52 /**
53 * Specify a custom `fetch` function implementation.
54 *
55 * If not provided, we use `node-fetch` on Node.js and otherwise expect that `fetch` is
56 * defined globally.
57 */
58 fetch?: Core.Fetch | undefined;
59
60 /**
61 * The maximum number of times that the client will retry a request in case of a
62 * temporary failure, like a network error or a 5XX error from the server.
63 *
64 * @default 2
65 */
66 maxRetries?: number;
67
68 /**
69 * Default headers to include with every request to the API.
70 *
71 * These can be removed in individual requests by explicitly setting the
72 * header to `undefined` or `null` in request options.
73 */
74 defaultHeaders?: Core.Headers;
75
76 /**
77 * Default query parameters to include with every request to the API.
78 *
79 * These can be removed in individual requests by explicitly setting the
80 * param to `undefined` in request options.
81 */
82 defaultQuery?: Core.DefaultQuery;
83}
84
85/** API Client for interfacing with the Cloudflare API. */
86export class Cloudflare extends Core.APIClient {
87 apiKey: string;
88 apiEmail: string;
89 apiToken: string;
90 userServiceKey: string;
91
92 private _options: ClientOptions;
93
94 /**
95 * API Client for interfacing with the Cloudflare API.
96 *
97 * @param {string | undefined} [opts.apiKey=process.env['CLOUDFLARE_API_KEY'] ?? undefined]
98 * @param {string | undefined} [opts.apiEmail=process.env['CLOUDFLARE_EMAIL'] ?? undefined]
99 * @param {string | undefined} [opts.apiToken=process.env['CLOUDFLARE_API_TOKEN'] ?? undefined]
100 * @param {string} opts.userServiceKey
101 * @param {string} [opts.baseURL=process.env['CLOUDFLARE_BASE_URL'] ?? https://api.cloudflare.com/client/v4] - Override the default base URL for the API.
102 * @param {number} [opts.timeout=1 minute] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.
103 * @param {number} [opts.httpAgent] - An HTTP agent used to manage HTTP(s) connections.
104 * @param {Core.Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.
105 * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.
106 * @param {Core.Headers} opts.defaultHeaders - Default headers to include with every request to the API.
107 * @param {Core.DefaultQuery} opts.defaultQuery - Default query parameters to include with every request to the API.
108 */
109 constructor({
110 baseURL = Core.readEnv('CLOUDFLARE_BASE_URL'),
111 apiKey = Core.readEnv('CLOUDFLARE_API_KEY'),
112 apiEmail = Core.readEnv('CLOUDFLARE_EMAIL'),
113 apiToken = Core.readEnv('CLOUDFLARE_API_TOKEN'),
114 userServiceKey,
115 ...opts
116 }: ClientOptions) {
117 if (apiKey === undefined) {
118 throw new Errors.CloudflareError(
119 "The CLOUDFLARE_API_KEY environment variable is missing or empty; either provide it, or instantiate the Cloudflare client with an apiKey option, like new Cloudflare({ apiKey: '144c9defac04969c7bfad8efaa8ea194' }).",
120 );
121 }
122 if (apiEmail === undefined) {
123 throw new Errors.CloudflareError(
124 "The CLOUDFLARE_EMAIL environment variable is missing or empty; either provide it, or instantiate the Cloudflare client with an apiEmail option, like new Cloudflare({ apiEmail: 'dev@cloudflare.com' }).",
125 );
126 }
127 if (apiToken === undefined) {
128 throw new Errors.CloudflareError(
129 "The CLOUDFLARE_API_TOKEN environment variable is missing or empty; either provide it, or instantiate the Cloudflare client with an apiToken option, like new Cloudflare({ apiToken: 'Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY' }).",
130 );
131 }
132 if (userServiceKey === undefined) {
133 throw new Errors.CloudflareError(
134 "Missing required client option userServiceKey; you need to instantiate the Cloudflare client with an userServiceKey option, like new Cloudflare({ userServiceKey: 'My User Service Key' }).",
135 );
136 }
137
138 const options: ClientOptions = {
139 apiKey,
140 apiEmail,
141 apiToken,
142 userServiceKey,
143 ...opts,
144 baseURL: baseURL || `https://api.cloudflare.com/client/v4`,
145 };
146
147 super({
148 baseURL: options.baseURL!,
149 timeout: options.timeout ?? 60000 /* 1 minute */,
150 httpAgent: options.httpAgent,
151 maxRetries: options.maxRetries,
152 fetch: options.fetch,
153 });
154 this._options = options;
155
156 this.apiKey = apiKey;
157 this.apiEmail = apiEmail;
158 this.apiToken = apiToken;
159 this.userServiceKey = userServiceKey;
160 }
161
162 accounts: API.Accounts = new API.Accounts(this);
163 ips: API.IPs = new API.IPs(this);
164 zones: API.Zones = new API.Zones(this);
165 ai: API.AI = new API.AI(this);
166 loadBalancers: API.LoadBalancers = new API.LoadBalancers(this);
167 access: API.Access = new API.Access(this);
168 dnsRecords: API.DNSRecords = new API.DNSRecords(this);
169 emails: API.Emails = new API.Emails(this);
170 accountMembers: API.AccountMembers = new API.AccountMembers(this);
171 tunnels: API.Tunnels = new API.Tunnels(this);
172 d1: API.D1 = new API.D1(this);
173 dex: API.Dex = new API.Dex(this);
174 r2: API.R2 = new API.R2(this);
175 stream: API.Stream = new API.Stream(this);
176 teamnet: API.Teamnet = new API.Teamnet(this);
177 warpConnector: API.WarpConnector = new API.WarpConnector(this);
178 dispatchers: API.Dispatchers = new API.Dispatchers(this);
179 workersForPlatforms: API.WorkersForPlatforms = new API.WorkersForPlatforms(this);
180 workerDomains: API.WorkerDomains = new API.WorkerDomains(this);
181 workerScripts: API.WorkerScripts = new API.WorkerScripts(this);
182 zerotrust: API.Zerotrust = new API.Zerotrust(this);
183 addressing: API.Addressing = new API.Addressing(this);
184 challenges: API.Challenges = new API.Challenges(this);
185 hyperdrive: API.Hyperdrive = new API.Hyperdrive(this);
186 intel: API.Intel = new API.Intel(this);
187 rum: API.Rum = new API.Rum(this);
188 vectorize: API.Vectorize = new API.Vectorize(this);
189 vectorizeIndexes: API.VectorizeIndexes = new API.VectorizeIndexes(this);
190 urlScanner: API.URLScanner = new API.URLScanner(this);
191 radar: API.Radar = new API.Radar(this);
192 botManagements: API.BotManagements = new API.BotManagements(this);
193 cacheReserves: API.CacheReserves = new API.CacheReserves(this);
194 originPostQuantumEncryptions: API.OriginPostQuantumEncryptions = new API.OriginPostQuantumEncryptions(this);
195 cache: API.Cache = new API.Cache(this);
196 firewall: API.Firewall = new API.Firewall(this);
197 zaraz: API.Zaraz = new API.Zaraz(this);
198 speedAPI: API.SpeedAPI = new API.SpeedAPI(this);
199 dcvDelegation: API.DcvDelegation = new API.DcvDelegation(this);
200 hostnames: API.Hostnames = new API.Hostnames(this);
201 logpush: API.Logpush = new API.Logpush(this);
202 hold: API.Hold = new API.Hold(this);
203 pageShield: API.PageShield = new API.PageShield(this);
204 fontSettings: API.FontSettings = new API.FontSettings(this);
205 snippets: API.Snippets = new API.Snippets(this);
206 dlp: API.Dlp = new API.Dlp(this);
207 gateway: API.Gateway = new API.Gateway(this);
208 accessTags: API.AccessTags = new API.AccessTags(this);
209
210 protected override defaultQuery(): Core.DefaultQuery | undefined {
211 return this._options.defaultQuery;
212 }
213
214 protected override defaultHeaders(opts: Core.FinalRequestOptions): Core.Headers {
215 return {
216 ...super.defaultHeaders(opts),
217 'x-auth-email': this.apiEmail,
218 ...this._options.defaultHeaders,
219 };
220 }
221
222 protected override authHeaders(opts: Core.FinalRequestOptions): Core.Headers {
223 const apiEmailAuth = this.apiEmailAuth(opts);
224 const apiKeyAuth = this.apiKeyAuth(opts);
225 const apiTokenAuth = this.apiTokenAuth(opts);
226 const userServiceKeyAuth = this.userServiceKeyAuth(opts);
227 return {};
228 }
229
230 protected apiEmailAuth(opts: Core.FinalRequestOptions): Core.Headers {
231 return { 'X-Auth-Email': this.apiEmail };
232 }
233
234 protected apiKeyAuth(opts: Core.FinalRequestOptions): Core.Headers {
235 return { 'X-Auth-Key': this.apiKey };
236 }
237
238 protected apiTokenAuth(opts: Core.FinalRequestOptions): Core.Headers {
239 return { Authorization: `Bearer ${this.apiToken}` };
240 }
241
242 protected userServiceKeyAuth(opts: Core.FinalRequestOptions): Core.Headers {
243 return { 'X-Auth-User-Service-Key': this.userServiceKey };
244 }
245
246 protected override stringifyQuery(query: Record<string, unknown>): string {
247 return qs.stringify(query, { arrayFormat: 'comma' });
248 }
249
250 static Cloudflare = this;
251
252 static CloudflareError = Errors.CloudflareError;
253 static APIError = Errors.APIError;
254 static APIConnectionError = Errors.APIConnectionError;
255 static APIConnectionTimeoutError = Errors.APIConnectionTimeoutError;
256 static APIUserAbortError = Errors.APIUserAbortError;
257 static NotFoundError = Errors.NotFoundError;
258 static ConflictError = Errors.ConflictError;
259 static RateLimitError = Errors.RateLimitError;
260 static BadRequestError = Errors.BadRequestError;
261 static AuthenticationError = Errors.AuthenticationError;
262 static InternalServerError = Errors.InternalServerError;
263 static PermissionDeniedError = Errors.PermissionDeniedError;
264 static UnprocessableEntityError = Errors.UnprocessableEntityError;
265}
266
267export const {
268 CloudflareError,
269 APIError,
270 APIConnectionError,
271 APIConnectionTimeoutError,
272 APIUserAbortError,
273 NotFoundError,
274 ConflictError,
275 RateLimitError,
276 BadRequestError,
277 AuthenticationError,
278 InternalServerError,
279 PermissionDeniedError,
280 UnprocessableEntityError,
281} = Errors;
282
283export import toFile = Uploads.toFile;
284export import fileFromPath = Uploads.fileFromPath;
285
286export namespace Cloudflare {
287 // Helper functions
288 export import toFile = Uploads.toFile;
289 export import fileFromPath = Uploads.fileFromPath;
290
291 export import RequestOptions = Core.RequestOptions;
292
293 export import Accounts = API.Accounts;
294 export import AccountListResponse = API.AccountListResponse;
295 export import AccountListParams = API.AccountListParams;
296
297 export import IPs = API.IPs;
298 export import IPListResponse = API.IPListResponse;
299 export import IPListParams = API.IPListParams;
300
301 export import Zones = API.Zones;
302 export import ZoneCreateResponse = API.ZoneCreateResponse;
303 export import ZoneListResponse = API.ZoneListResponse;
304 export import ZoneCreateParams = API.ZoneCreateParams;
305 export import ZoneListParams = API.ZoneListParams;
306
307 export import AI = API.AI;
308 export import AIRunModelResponse = API.AIRunModelResponse;
309 export import AIRunModelParams = API.AIRunModelParams;
310
311 export import LoadBalancers = API.LoadBalancers;
312 export import LoadBalancerCreateResponse = API.LoadBalancerCreateResponse;
313 export import LoadBalancerRetrieveResponse = API.LoadBalancerRetrieveResponse;
314 export import LoadBalancerUpdateResponse = API.LoadBalancerUpdateResponse;
315 export import LoadBalancerListResponse = API.LoadBalancerListResponse;
316 export import LoadBalancerDeleteResponse = API.LoadBalancerDeleteResponse;
317 export import LoadBalancerCreateParams = API.LoadBalancerCreateParams;
318 export import LoadBalancerUpdateParams = API.LoadBalancerUpdateParams;
319
320 export import Access = API.Access;
321
322 export import DNSRecords = API.DNSRecords;
323 export import DNSRecordRetrieveResponse = API.DNSRecordRetrieveResponse;
324 export import DNSRecordUpdateResponse = API.DNSRecordUpdateResponse;
325 export import DNSRecordDeleteResponse = API.DNSRecordDeleteResponse;
326 export import DNSRecordDNSRecordsForAZoneCreateDNSRecordResponse = API.DNSRecordDNSRecordsForAZoneCreateDNSRecordResponse;
327 export import DNSRecordDNSRecordsForAZoneListDNSRecordsResponse = API.DNSRecordDNSRecordsForAZoneListDNSRecordsResponse;
328 export import DNSRecordUpdateParams = API.DNSRecordUpdateParams;
329 export import DNSRecordDNSRecordsForAZoneCreateDNSRecordParams = API.DNSRecordDNSRecordsForAZoneCreateDNSRecordParams;
330 export import DNSRecordDNSRecordsForAZoneListDNSRecordsParams = API.DNSRecordDNSRecordsForAZoneListDNSRecordsParams;
331
332 export import Emails = API.Emails;
333
334 export import AccountMembers = API.AccountMembers;
335
336 export import Tunnels = API.Tunnels;
337 export import TunnelRetrieveResponse = API.TunnelRetrieveResponse;
338 export import TunnelDeleteResponse = API.TunnelDeleteResponse;
339 export import TunnelArgoTunnelCreateAnArgoTunnelResponse = API.TunnelArgoTunnelCreateAnArgoTunnelResponse;
340 export import TunnelArgoTunnelListArgoTunnelsResponse = API.TunnelArgoTunnelListArgoTunnelsResponse;
341 export import TunnelDeleteParams = API.TunnelDeleteParams;
342 export import TunnelArgoTunnelCreateAnArgoTunnelParams = API.TunnelArgoTunnelCreateAnArgoTunnelParams;
343 export import TunnelArgoTunnelListArgoTunnelsParams = API.TunnelArgoTunnelListArgoTunnelsParams;
344
345 export import D1 = API.D1;
346
347 export import Dex = API.Dex;
348
349 export import R2 = API.R2;
350
351 export import Stream = API.Stream;
352
353 export import Teamnet = API.Teamnet;
354
355 export import WarpConnector = API.WarpConnector;
356 export import WarpConnectorCreateResponse = API.WarpConnectorCreateResponse;
357 export import WarpConnectorRetrieveResponse = API.WarpConnectorRetrieveResponse;
358 export import WarpConnectorUpdateResponse = API.WarpConnectorUpdateResponse;
359 export import WarpConnectorListResponse = API.WarpConnectorListResponse;
360 export import WarpConnectorDeleteResponse = API.WarpConnectorDeleteResponse;
361 export import WarpConnectorCreateParams = API.WarpConnectorCreateParams;
362 export import WarpConnectorUpdateParams = API.WarpConnectorUpdateParams;
363 export import WarpConnectorListParams = API.WarpConnectorListParams;
364 export import WarpConnectorDeleteParams = API.WarpConnectorDeleteParams;
365
366 export import Dispatchers = API.Dispatchers;
367
368 export import WorkersForPlatforms = API.WorkersForPlatforms;
369
370 export import WorkerDomains = API.WorkerDomains;
371 export import WorkerDomainRetrieveResponse = API.WorkerDomainRetrieveResponse;
372
373 export import WorkerScripts = API.WorkerScripts;
374
375 export import Zerotrust = API.Zerotrust;
376
377 export import Addressing = API.Addressing;
378
379 export import Challenges = API.Challenges;
380
381 export import Hyperdrive = API.Hyperdrive;
382
383 export import Intel = API.Intel;
384
385 export import Rum = API.Rum;
386
387 export import Vectorize = API.Vectorize;
388
389 export import VectorizeIndexes = API.VectorizeIndexes;
390 export import VectorizeIndexCreateResponse = API.VectorizeIndexCreateResponse;
391 export import VectorizeIndexRetrieveResponse = API.VectorizeIndexRetrieveResponse;
392 export import VectorizeIndexUpdateResponse = API.VectorizeIndexUpdateResponse;
393 export import VectorizeIndexDeleteResponse = API.VectorizeIndexDeleteResponse;
394 export import VectorizeIndexDeleteByIDsResponse = API.VectorizeIndexDeleteByIDsResponse;
395 export import VectorizeIndexGetByIDsResponse = API.VectorizeIndexGetByIDsResponse;
396 export import VectorizeIndexInsertResponse = API.VectorizeIndexInsertResponse;
397 export import VectorizeIndexQueryResponse = API.VectorizeIndexQueryResponse;
398 export import VectorizeIndexUpsertResponse = API.VectorizeIndexUpsertResponse;
399 export import VectorizeIndexCreateParams = API.VectorizeIndexCreateParams;
400 export import VectorizeIndexUpdateParams = API.VectorizeIndexUpdateParams;
401 export import VectorizeIndexDeleteByIDsParams = API.VectorizeIndexDeleteByIDsParams;
402 export import VectorizeIndexGetByIDsParams = API.VectorizeIndexGetByIDsParams;
403 export import VectorizeIndexInsertParams = API.VectorizeIndexInsertParams;
404 export import VectorizeIndexQueryParams = API.VectorizeIndexQueryParams;
405 export import VectorizeIndexUpsertParams = API.VectorizeIndexUpsertParams;
406
407 export import URLScanner = API.URLScanner;
408 export import URLScannerScanResponse = API.URLScannerScanResponse;
409 export import URLScannerScanParams = API.URLScannerScanParams;
410
411 export import Radar = API.Radar;
412
413 export import BotManagements = API.BotManagements;
414 export import BotManagementRetrieveResponse = API.BotManagementRetrieveResponse;
415 export import BotManagementUpdateResponse = API.BotManagementUpdateResponse;
416 export import BotManagementUpdateParams = API.BotManagementUpdateParams;
417
418 export import CacheReserves = API.CacheReserves;
419 export import CacheReserveCreateResponse = API.CacheReserveCreateResponse;
420 export import CacheReserveClearResponse = API.CacheReserveClearResponse;
421
422 export import OriginPostQuantumEncryptions = API.OriginPostQuantumEncryptions;
423 export import OriginPostQuantumEncryptionRetrieveResponse = API.OriginPostQuantumEncryptionRetrieveResponse;
424 export import OriginPostQuantumEncryptionUpdateResponse = API.OriginPostQuantumEncryptionUpdateResponse;
425 export import OriginPostQuantumEncryptionUpdateParams = API.OriginPostQuantumEncryptionUpdateParams;
426
427 export import Cache = API.Cache;
428 export import CacheRegionalTieredCachesResponse = API.CacheRegionalTieredCachesResponse;
429 export import CacheUpdateRegionalTieredCacheResponse = API.CacheUpdateRegionalTieredCacheResponse;
430 export import CacheUpdateRegionalTieredCacheParams = API.CacheUpdateRegionalTieredCacheParams;
431
432 export import Firewall = API.Firewall;
433
434 export import Zaraz = API.Zaraz;
435 export import ZarazWorkflowUpdateResponse = API.ZarazWorkflowUpdateResponse;
436 export import ZarazWorkflowUpdateParams = API.ZarazWorkflowUpdateParams;
437
438 export import SpeedAPI = API.SpeedAPI;
439 export import SpeedAPIAvailabilitiesListResponse = API.SpeedAPIAvailabilitiesListResponse;
440 export import SpeedAPIPagesListResponse = API.SpeedAPIPagesListResponse;
441 export import SpeedAPIScheduleDeleteResponse = API.SpeedAPIScheduleDeleteResponse;
442 export import SpeedAPIScheduleRetrieveResponse = API.SpeedAPIScheduleRetrieveResponse;
443 export import SpeedAPITestsCreateResponse = API.SpeedAPITestsCreateResponse;
444 export import SpeedAPITestsDeleteResponse = API.SpeedAPITestsDeleteResponse;
445 export import SpeedAPITestsListResponse = API.SpeedAPITestsListResponse;
446 export import SpeedAPITestsRetrieveResponse = API.SpeedAPITestsRetrieveResponse;
447 export import SpeedAPITrendsListResponse = API.SpeedAPITrendsListResponse;
448 export import SpeedAPIScheduleDeleteParams = API.SpeedAPIScheduleDeleteParams;
449 export import SpeedAPIScheduleRetrieveParams = API.SpeedAPIScheduleRetrieveParams;
450 export import SpeedAPITestsCreateParams = API.SpeedAPITestsCreateParams;
451 export import SpeedAPITestsDeleteParams = API.SpeedAPITestsDeleteParams;
452 export import SpeedAPITestsListParams = API.SpeedAPITestsListParams;
453 export import SpeedAPITrendsListParams = API.SpeedAPITrendsListParams;
454
455 export import DcvDelegation = API.DcvDelegation;
456
457 export import Hostnames = API.Hostnames;
458
459 export import Logpush = API.Logpush;
460
461 export import Hold = API.Hold;
462 export import HoldRetrieveResponse = API.HoldRetrieveResponse;
463 export import HoldEnforceResponse = API.HoldEnforceResponse;
464 export import HoldRemoveResponse = API.HoldRemoveResponse;
465 export import HoldEnforceParams = API.HoldEnforceParams;
466 export import HoldRemoveParams = API.HoldRemoveParams;
467
468 export import PageShield = API.PageShield;
469
470 export import FontSettings = API.FontSettings;
471
472 export import Snippets = API.Snippets;
473 export import SnippetRetrieveResponse = API.SnippetRetrieveResponse;
474 export import SnippetUpdateResponse = API.SnippetUpdateResponse;
475 export import SnippetListResponse = API.SnippetListResponse;
476 export import SnippetDeleteResponse = API.SnippetDeleteResponse;
477 export import SnippetUpdateParams = API.SnippetUpdateParams;
478
479 export import Dlp = API.Dlp;
480
481 export import Gateway = API.Gateway;
482
483 export import AccessTags = API.AccessTags;
484 export import AccessTagCreateResponse = API.AccessTagCreateResponse;
485 export import AccessTagRetrieveResponse = API.AccessTagRetrieveResponse;
486 export import AccessTagUpdateResponse = API.AccessTagUpdateResponse;
487 export import AccessTagDeleteResponse = API.AccessTagDeleteResponse;
488 export import AccessTagCreateParams = API.AccessTagCreateParams;
489 export import AccessTagUpdateParams = API.AccessTagUpdateParams;
490}
491
492export default Cloudflare;
493