cloudflare
Version:
The official TypeScript library for the Cloudflare API
857 lines • 28.5 kB
text/typescript
import { APIResource } from "../../core/resource.mjs";
import { APIPromise } from "../../core/api-promise.mjs";
import { RequestOptions } from "../../internal/request-options.mjs";
export declare class BaseDMARCReports extends APIResource {
static readonly _key: readonly ['emailAuth', 'dmarcReports'];
/**
* Updates the DMARC report configuration for a zone. At least one of `enabled` or
* `skip_wizard` must be provided. When enabling, the handler will ensure the DMARC
* RUA record exists in DNS.
*
* @example
* ```ts
* const response = await client.emailAuth.dmarcReports.edit({
* zone_id: '023e105f4ecef8ad9ca31a8372d0c353',
* });
* ```
*/
edit(params: DMARCReportEditParams, options?: RequestOptions): APIPromise<DMARCReportEditResponse>;
/**
* Retrieves the current DMARC report configuration and status for a zone. Returns
* the RUA prefix, enabled status, approved sources, and DNS records.
*
* @example
* ```ts
* const dmarcReport = await client.emailAuth.dmarcReports.get(
* { zone_id: '023e105f4ecef8ad9ca31a8372d0c353' },
* );
* ```
*/
get(params: DMARCReportGetParams, options?: RequestOptions): APIPromise<DMARCReportGetResponse>;
}
export declare class DMARCReports extends BaseDMARCReports {
}
/**
* Response for GET/PATCH /dmarc-reports
*/
export interface DMARCReportEditResponse {
/**
* List of approved sending sources (omitted when empty)
*/
approved_sources?: Array<DMARCReportEditResponse.ApprovedSource>;
/**
* @deprecated Use `created_at` instead.
*/
created?: string;
/**
* Creation timestamp
*/
created_at?: string;
/**
* Whether DMARC reports are enabled
*/
enabled?: boolean;
/**
* @deprecated Use `modified_at` instead.
*/
modified?: string;
/**
* Last modification timestamp
*/
modified_at?: string;
/**
* Live DNS records for the zone, grouped by type
*/
records?: DMARCReportEditResponse.Records;
/**
* Prefix for DMARC RUA addresses (32-char hex string)
*/
rua_prefix?: string;
/**
* Whether to skip the setup wizard
*/
skip_wizard?: boolean;
/**
* DMARC configuration status. The API omits this field when DMARC is correctly
* configured. If the zone lacks a DMARC TXT record of its own, the API resolves
* \_dmarc.{zone} recursively and evaluates whatever that lookup returns. A CNAME
* at \_dmarc.{zone} that points to a valid DMARC record is therefore healthy; the
* cname-on-dmarc-record value means the CNAME resolves to no DMARC record at all.
*/
status?: 'missing-dmarc-report' | 'multiple-dmarc-reports' | 'missing-dmarc-rua' | 'cname-on-dmarc-record' | 'unauthorized-reporting-domain';
/**
* @deprecated Use `zone_id` instead.
*/
tag?: string;
/**
* Zone identifier
*/
zone_id?: string;
}
export declare namespace DMARCReportEditResponse {
/**
* A single approved sending source
*/
interface ApprovedSource {
/**
* @deprecated Use `created_at` instead.
*/
created?: string;
/**
* Creation timestamp
*/
created_at?: string;
/**
* The source domain
*/
domain?: string;
/**
* Resolved IP addresses from SPF
*/
ips?: Array<string>;
/**
* @deprecated Use `modified_at` instead.
*/
modified?: string;
/**
* Last modification timestamp
*/
modified_at?: string;
/**
* Source name (typically same as domain)
*/
name?: string;
/**
* URL-friendly identifier
*/
slug?: string;
/**
* Source UUID
*/
tag?: string;
}
/**
* Live DNS records for the zone, grouped by type
*/
interface Records {
/**
* BIMI TXT records
*/
bimi_records?: Array<Records.BimiRecord>;
/**
* CNAME records for DKIM selectors. Each selector is resolved independently; when
* a selector's CNAME resolves to a DKIM TXT record, the API returns that record's
* content in the `resolved` field of the corresponding entry.
*/
cname_dkim_records?: Array<Records.CnamedkimRecord>;
/**
* CNAME records at \_dmarc. When such a CNAME resolves to a DMARC TXT record, the
* API returns that record's content in the `resolved` field of the corresponding
* entry.
*/
cname_dmarc_records?: Array<Records.CnamedmarcRecord>;
/**
* CNAME records at the zone apex. When such a CNAME resolves to an SPF TXT record,
* the API returns that record's content in the `resolved` field of the
* corresponding entry.
*/
cname_spf_records?: Array<Records.CnamespfRecord>;
/**
* DKIM TXT records
*/
dkim_records?: Array<Records.DKIMRecord>;
/**
* DMARC TXT records
*/
dmarc_records?: Array<Records.DMARCRecord>;
/**
* @deprecated Use the `resolved` field on the corresponding entry in
* cname_dmarc_records instead.
*/
resolved_dmarc_records?: Array<Records.ResolvedDMARCRecord>;
/**
* SPF TXT records
*/
spf_records?: Array<Records.SPFRecord>;
}
namespace Records {
/**
* Summary of a single DNS record
*/
interface BimiRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
/**
* Summary of a single DNS record
*/
interface CnamedkimRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
/**
* Summary of a single DNS record
*/
interface CnamedmarcRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
/**
* Summary of a single DNS record
*/
interface CnamespfRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
/**
* Summary of a single DNS record
*/
interface DKIMRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
/**
* Summary of a single DNS record
*/
interface DMARCRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
/**
* @deprecated A DMARC TXT record that a recursive lookup of \_dmarc.{zone}
* returned. Such a record usually lives in another zone outside this account's
* control, so this schema omits the DNS record ID. The API therefore treats such a
* record as read-only.
*/
interface ResolvedDMARCRecord {
/**
* The TXT record value. The API joins all character-strings into a single string.
*/
content?: string;
/**
* The name the API queried.
*/
name?: string;
}
/**
* Summary of a single DNS record
*/
interface SPFRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
}
}
/**
* Response for GET/PATCH /dmarc-reports
*/
export interface DMARCReportGetResponse {
/**
* List of approved sending sources (omitted when empty)
*/
approved_sources?: Array<DMARCReportGetResponse.ApprovedSource>;
/**
* @deprecated Use `created_at` instead.
*/
created?: string;
/**
* Creation timestamp
*/
created_at?: string;
/**
* Whether DMARC reports are enabled
*/
enabled?: boolean;
/**
* @deprecated Use `modified_at` instead.
*/
modified?: string;
/**
* Last modification timestamp
*/
modified_at?: string;
/**
* Live DNS records for the zone, grouped by type
*/
records?: DMARCReportGetResponse.Records;
/**
* Prefix for DMARC RUA addresses (32-char hex string)
*/
rua_prefix?: string;
/**
* Whether to skip the setup wizard
*/
skip_wizard?: boolean;
/**
* DMARC configuration status. The API omits this field when DMARC is correctly
* configured. If the zone lacks a DMARC TXT record of its own, the API resolves
* \_dmarc.{zone} recursively and evaluates whatever that lookup returns. A CNAME
* at \_dmarc.{zone} that points to a valid DMARC record is therefore healthy; the
* cname-on-dmarc-record value means the CNAME resolves to no DMARC record at all.
*/
status?: 'missing-dmarc-report' | 'multiple-dmarc-reports' | 'missing-dmarc-rua' | 'cname-on-dmarc-record' | 'unauthorized-reporting-domain';
/**
* @deprecated Use `zone_id` instead.
*/
tag?: string;
/**
* Zone identifier
*/
zone_id?: string;
}
export declare namespace DMARCReportGetResponse {
/**
* A single approved sending source
*/
interface ApprovedSource {
/**
* @deprecated Use `created_at` instead.
*/
created?: string;
/**
* Creation timestamp
*/
created_at?: string;
/**
* The source domain
*/
domain?: string;
/**
* Resolved IP addresses from SPF
*/
ips?: Array<string>;
/**
* @deprecated Use `modified_at` instead.
*/
modified?: string;
/**
* Last modification timestamp
*/
modified_at?: string;
/**
* Source name (typically same as domain)
*/
name?: string;
/**
* URL-friendly identifier
*/
slug?: string;
/**
* Source UUID
*/
tag?: string;
}
/**
* Live DNS records for the zone, grouped by type
*/
interface Records {
/**
* BIMI TXT records
*/
bimi_records?: Array<Records.BimiRecord>;
/**
* CNAME records for DKIM selectors. Each selector is resolved independently; when
* a selector's CNAME resolves to a DKIM TXT record, the API returns that record's
* content in the `resolved` field of the corresponding entry.
*/
cname_dkim_records?: Array<Records.CnamedkimRecord>;
/**
* CNAME records at \_dmarc. When such a CNAME resolves to a DMARC TXT record, the
* API returns that record's content in the `resolved` field of the corresponding
* entry.
*/
cname_dmarc_records?: Array<Records.CnamedmarcRecord>;
/**
* CNAME records at the zone apex. When such a CNAME resolves to an SPF TXT record,
* the API returns that record's content in the `resolved` field of the
* corresponding entry.
*/
cname_spf_records?: Array<Records.CnamespfRecord>;
/**
* DKIM TXT records
*/
dkim_records?: Array<Records.DKIMRecord>;
/**
* DMARC TXT records
*/
dmarc_records?: Array<Records.DMARCRecord>;
/**
* @deprecated Use the `resolved` field on the corresponding entry in
* cname_dmarc_records instead.
*/
resolved_dmarc_records?: Array<Records.ResolvedDMARCRecord>;
/**
* SPF TXT records
*/
spf_records?: Array<Records.SPFRecord>;
}
namespace Records {
/**
* Summary of a single DNS record
*/
interface BimiRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
/**
* Summary of a single DNS record
*/
interface CnamedkimRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
/**
* Summary of a single DNS record
*/
interface CnamedmarcRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
/**
* Summary of a single DNS record
*/
interface CnamespfRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
/**
* Summary of a single DNS record
*/
interface DKIMRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
/**
* Summary of a single DNS record
*/
interface DMARCRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
/**
* @deprecated A DMARC TXT record that a recursive lookup of \_dmarc.{zone}
* returned. Such a record usually lives in another zone outside this account's
* control, so this schema omits the DNS record ID. The API therefore treats such a
* record as read-only.
*/
interface ResolvedDMARCRecord {
/**
* The TXT record value. The API joins all character-strings into a single string.
*/
content?: string;
/**
* The name the API queried.
*/
name?: string;
}
/**
* Summary of a single DNS record
*/
interface SPFRecord {
/**
* DNS record ID
*/
id?: string;
/**
* Record content
*/
content?: string;
/**
* DNS record name
*/
name?: string;
/**
* For a CNAME record, the TXT content(s) found by following the CNAME chain to its
* target. An empty array means the chain was resolved but nothing usable was found
* there; omitted/null means resolution was not attempted for this record (always
* the case for non-CNAME entries). A CNAME chain that terminates in more than one
* TXT value at the target yields multiple entries. Populated on entries in
* cname_dmarc_records, cname_spf_records, and cname_dkim_records.
*/
resolved?: Array<string> | null;
/**
* Time to live in seconds
*/
ttl?: number;
/**
* Record type
*/
type?: string;
}
}
}
export interface DMARCReportEditParams {
/**
* Path param: Zone identifier.
*/
zone_id: string;
/**
* Body param: Enable or disable DMARC reports for this zone
*/
enabled?: boolean | null;
/**
* Body param: Skip the DMARC setup wizard
*/
skip_wizard?: boolean | null;
}
export interface DMARCReportGetParams {
/**
* Zone identifier.
*/
zone_id: string;
}
export declare namespace DMARCReports {
export { type DMARCReportEditResponse as DMARCReportEditResponse, type DMARCReportGetResponse as DMARCReportGetResponse, type DMARCReportEditParams as DMARCReportEditParams, type DMARCReportGetParams as DMARCReportGetParams, };
}
//# sourceMappingURL=dmarc-reports.d.mts.map