import * as plugins from '../plugins.js'; import type * as authInterfaces from '../data/auth.js'; import type { IDomain } from '../data/domain.js'; // ============================================================================ // Domain Endpoints // ============================================================================ /** * Get all domains under management. */ export interface IReq_GetDomains extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_GetDomains > { method: 'getDomains'; request: { identity?: authInterfaces.IIdentity; apiToken?: string; }; response: { domains: IDomain[]; }; } /** * Get a single domain by id. */ export interface IReq_GetDomain extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_GetDomain > { method: 'getDomain'; request: { identity?: authInterfaces.IIdentity; apiToken?: string; id: string; }; response: { domain: IDomain | null; }; } /** * Create a manual (authoritative) domain. dcrouter will serve DNS * records for this domain via the embedded smartdns.DnsServer. */ export interface IReq_CreateDomain extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_CreateDomain > { method: 'createDomain'; request: { identity?: authInterfaces.IIdentity; apiToken?: string; name: string; description?: string; }; response: { success: boolean; id?: string; message?: string; }; } /** * Import one or more domains from a DNS provider. For each imported * domain, records are pulled from the provider into DnsRecordDoc. */ export interface IReq_ImportDomain extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_ImportDomain > { method: 'importDomain'; request: { identity?: authInterfaces.IIdentity; apiToken?: string; providerId: string; /** FQDN(s) of the zone(s) to import — must be visible to the provider account. */ domainNames: string[]; }; response: { success: boolean; importedIds?: string[]; message?: string; }; } /** * Update a domain's metadata. Cannot change source / providerId once set. */ export interface IReq_UpdateDomain extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_UpdateDomain > { method: 'updateDomain'; request: { identity?: authInterfaces.IIdentity; apiToken?: string; id: string; description?: string; }; response: { success: boolean; message?: string; }; } /** * Delete a domain and all of its DNS records. * For provider-managed domains, this only removes dcrouter's local record — * it does NOT delete the zone at the provider. */ export interface IReq_DeleteDomain extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_DeleteDomain > { method: 'deleteDomain'; request: { identity?: authInterfaces.IIdentity; apiToken?: string; id: string; }; response: { success: boolean; message?: string; }; } /** * Force-resync a provider-managed domain: re-pulls all records from the * provider API, replacing the cached DnsRecordDocs. * No-op for manual domains. */ export interface IReq_SyncDomain extends plugins.typedrequestInterfaces.implementsTR< plugins.typedrequestInterfaces.ITypedRequest, IReq_SyncDomain > { method: 'syncDomain'; request: { identity?: authInterfaces.IIdentity; apiToken?: string; id: string; }; response: { success: boolean; recordCount?: number; message?: string; }; }