import * as plugins from '../plugins.js'; import type * as authInterfaces from '../data/auth.js'; import type { IDnsRecord, TDnsRecordType } from '../data/dns-record.js'; // ============================================================================ // DNS Record Endpoints // ============================================================================ /** * Get all DNS records for a domain. */ export interface IReq_GetDnsRecords extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_GetDnsRecords > { method: 'getDnsRecords'; request: { identity?: authInterfaces.IIdentity; apiToken?: string; domainId: string; }; response: { records: IDnsRecord[]; }; } /** * Get a single DNS record by id. */ export interface IReq_GetDnsRecord extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_GetDnsRecord > { method: 'getDnsRecord'; request: { identity?: authInterfaces.IIdentity; apiToken?: string; id: string; }; response: { record: IDnsRecord | null; }; } /** * Create a new DNS record. * * For dcrouter-hosted domains: registers the record with the embedded DnsServer. * For provider domains: pushes the record to the provider API. */ export interface IReq_CreateDnsRecord extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_CreateDnsRecord > { method: 'createDnsRecord'; request: { identity?: authInterfaces.IIdentity; apiToken?: string; domainId: string; name: string; type: TDnsRecordType; value: string; ttl?: number; proxied?: boolean; }; response: { success: boolean; id?: string; message?: string; }; } /** * Update a DNS record. */ export interface IReq_UpdateDnsRecord extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_UpdateDnsRecord > { method: 'updateDnsRecord'; request: { identity?: authInterfaces.IIdentity; apiToken?: string; id: string; name?: string; value?: string; ttl?: number; proxied?: boolean; }; response: { success: boolean; message?: string; }; } /** * Delete a DNS record. */ export interface IReq_DeleteDnsRecord extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_DeleteDnsRecord > { method: 'deleteDnsRecord'; request: { identity?: authInterfaces.IIdentity; apiToken?: string; id: string; }; response: { success: boolean; message?: string; }; }