cloudflare
Version:
The official TypeScript library for the Cloudflare API
204 lines (182 loc) • 4.96 kB
text/typescript
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import { APIResource } from '../../core/resource';
import * as EmailRoutingAPI from './email-routing';
import { APIPromise } from '../../core/api-promise';
import { SinglePage } from '../../core/pagination';
import { RequestOptions } from '../../internal/request-options';
import { path } from '../../internal/utils/path';
export class BaseDNS extends APIResource {
static override readonly _key: readonly ['emailRouting', 'dns'] = Object.freeze([
'emailRouting',
'dns',
] as const);
/**
* Enable your Email Routing zone. Add and lock the necessary MX and SPF records.
*
* @example
* ```ts
* const settings = await client.emailRouting.dns.create({
* zone_id: '023e105f4ecef8ad9ca31a8372d0c353',
* });
* ```
*/
create(params: DNSCreateParams, options?: RequestOptions): APIPromise<EmailRoutingAPI.Settings> {
const { zone_id, ...body } = params;
return (
this._client.post(path`/zones/${zone_id}/email/routing/dns`, { body, ...options }) as APIPromise<{
result: EmailRoutingAPI.Settings;
}>
)._thenUnwrap((obj) => obj.result);
}
/**
* Disable your Email Routing zone. Also removes additional MX records previously
* required for Email Routing to work.
*
* @example
* ```ts
* const settings = await client.emailRouting.dns.delete({
* zone_id: '023e105f4ecef8ad9ca31a8372d0c353',
* });
* ```
*/
delete(params: DNSDeleteParams, options?: RequestOptions): APIPromise<EmailRoutingAPI.Settings> {
const { zone_id } = params;
return (
this._client.delete(path`/zones/${zone_id}/email/routing/dns`, options) as APIPromise<{
result: EmailRoutingAPI.Settings;
}>
)._thenUnwrap((obj) => obj.result);
}
/**
* Unlock MX Records previously locked by Email Routing.
*
* @example
* ```ts
* const settings = await client.emailRouting.dns.edit({
* zone_id: '023e105f4ecef8ad9ca31a8372d0c353',
* });
* ```
*/
edit(params: DNSEditParams, options?: RequestOptions): APIPromise<EmailRoutingAPI.Settings> {
const { zone_id, ...body } = params;
return (
this._client.patch(path`/zones/${zone_id}/email/routing/dns`, { body, ...options }) as APIPromise<{
result: EmailRoutingAPI.Settings;
}>
)._thenUnwrap((obj) => obj.result);
}
/**
* Show the DNS records needed to configure your Email Routing zone.
*
* @example
* ```ts
* const dnsRecords = await client.emailRouting.dns.get({
* zone_id: '023e105f4ecef8ad9ca31a8372d0c353',
* });
* ```
*/
get(params: DNSGetParams, options?: RequestOptions): APIPromise<DNSGetResponse> {
const { zone_id, ...query } = params;
return (
this._client.get(path`/zones/${zone_id}/email/routing/dns`, { query, ...options }) as APIPromise<{
result: DNSGetResponse;
}>
)._thenUnwrap((obj) => obj.result);
}
}
export class DNS extends BaseDNS {}
export type DNSRecordsSinglePage = SinglePage<DNSRecord>;
/**
* List of records needed to enable an Email Routing zone.
*/
export interface DNSRecord {
/**
* DNS record content.
*/
content?: string;
/**
* DNS record name (or @ for the zone apex).
*/
name?: string;
/**
* Required for MX, SRV and URI records. Unused by other record types. Records with
* lower priorities are preferred.
*/
priority?: number;
/**
* Time to live, in seconds, of the DNS record. Must be between 60 and 86400, or 1
* for 'automatic'.
*/
ttl?: number | 1;
/**
* DNS record type.
*/
type?:
| 'A'
| 'AAAA'
| 'CNAME'
| 'HTTPS'
| 'TXT'
| 'SRV'
| 'LOC'
| 'MX'
| 'NS'
| 'CERT'
| 'DNSKEY'
| 'DS'
| 'NAPTR'
| 'SMIMEA'
| 'SSHFP'
| 'SVCB'
| 'TLSA'
| 'URI';
}
export type DNSGetResponse = Array<DNSRecord>;
export interface DNSCreateParams {
/**
* Path param: Identifier.
*/
zone_id: string;
/**
* Body param: Domain of your zone.
*/
name?: string;
}
export interface DNSDeleteParams {
/**
* Identifier.
*/
zone_id: string;
}
export interface DNSEditParams {
/**
* Path param: Identifier.
*/
zone_id: string;
/**
* Body param: Domain of your zone.
*/
name?: string;
}
export interface DNSGetParams {
/**
* Path param: Identifier.
*/
zone_id: string;
/**
* Query param: Deprecated. When supplied, the response shape differs from the
* documented default and is not modeled in generated SDKs. Do not rely on this
* parameter.
*/
subdomain?: string;
}
export declare namespace DNS {
export {
type DNSRecord as DNSRecord,
type DNSGetResponse as DNSGetResponse,
type DNSCreateParams as DNSCreateParams,
type DNSDeleteParams as DNSDeleteParams,
type DNSEditParams as DNSEditParams,
type DNSGetParams as DNSGetParams,
};
}