type Cloudflare = {
token: string;
email: string;
key: string;
};
/**
* Update DNS Record
* Update an existing DNS record.
Notes:
- A/AAAA records cannot exist on the same name as CNAME records.
- NS records cannot exist on the same name as any other record type.
- Domain names are always represented in Punycode, even if Unicode
characters were used when creating the record.
*/
export async function main(
auth: Cloudflare,
identifier: string,
zone_identifier: string,
body:
| ({
content?: string;
name?: string;
proxied?: boolean;
type?: "A";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
name?: string;
proxied?: boolean;
type?: "AAAA";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
data?: {
flags?: number;
tag?: string;
value?: string;
[k: string]: unknown;
};
name?: string;
type?: "CAA";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
data?: {
algorithm?: number;
certificate?: string;
key_tag?: number;
type?: number;
[k: string]: unknown;
};
name?: string;
type?: "CERT";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: { [k: string]: unknown };
name?: string;
proxied?: boolean;
type?: "CNAME";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
data?: {
algorithm?: number;
flags?: number;
protocol?: number;
public_key?: string;
[k: string]: unknown;
};
name?: string;
type?: "DNSKEY";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
data?: {
algorithm?: number;
digest?: string;
digest_type?: number;
key_tag?: number;
[k: string]: unknown;
};
name?: string;
type?: "DS";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
data?: {
priority?: number;
target?: string;
value?: string;
[k: string]: unknown;
};
name?: string;
type?: "HTTPS";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
data?: {
altitude?: number;
lat_degrees?: number;
lat_direction?: "N" | "S";
lat_minutes?: number;
lat_seconds?: number;
long_degrees?: number;
long_direction?: "E" | "W";
long_minutes?: number;
long_seconds?: number;
precision_horz?: number;
precision_vert?: number;
size?: number;
[k: string]: unknown;
};
name?: string;
type?: "LOC";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
name?: string;
priority?: number;
type?: "MX";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
data?: {
flags?: string;
order?: number;
preference?: number;
regex?: string;
replacement?: string;
service?: string;
[k: string]: unknown;
};
name?: string;
type?: "NAPTR";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: { [k: string]: unknown };
name?: string;
type?: "NS";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
name?: string;
type?: "PTR";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
data?: {
certificate?: string;
matching_type?: number;
selector?: number;
usage?: number;
[k: string]: unknown;
};
name?: string;
type?: "SMIMEA";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
data?: {
name?: string;
port?: number;
priority?: number;
proto?: string;
service?: string;
target?: string;
weight?: number;
[k: string]: unknown;
};
name?: string;
type?: "SRV";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
data?: {
algorithm?: number;
fingerprint?: string;
type?: number;
[k: string]: unknown;
};
name?: string;
type?: "SSHFP";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
data?: {
priority?: number;
target?: string;
value?: string;
[k: string]: unknown;
};
name?: string;
type?: "SVCB";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
data?: {
certificate?: string;
matching_type?: number;
selector?: number;
usage?: number;
[k: string]: unknown;
};
name?: string;
type?: "TLSA";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
name?: string;
type?: "TXT";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
| ({
content?: string;
data?: { content?: string; weight?: number; [k: string]: unknown };
name?: string;
priority?: number;
type?: "URI";
[k: string]: unknown;
} & {
comment?: string;
created_on?: string;
id?: string;
locked?: boolean;
meta?: { auto_added?: boolean; source?: string; [k: string]: unknown };
modified_on?: string;
proxiable?: boolean;
tags?: string[];
ttl?: (number | 1) & number;
zone_id?: string;
zone_name?: string;
[k: string]: unknown;
})
) {
const url = new URL(
`https://api.cloudflare.com/client/v4/zones/${zone_identifier}/dns_records/${identifier}`
);
const response = await fetch(url, {
method: "PUT",
headers: {
"X-AUTH-EMAIL": auth.email,
"X-AUTH-KEY": auth.key,
"Content-Type": "application/json",
Authorization: "Bearer " + auth.token,
},
body: JSON.stringify(body),
});
if (!response.ok) {
const text = await response.text();
throw new Error(`${response.status} ${text}`);
}
return await response.json();
}
Submitted by hugo697 186 days ago