151 lines
3.7 KiB
TypeScript
151 lines
3.7 KiB
TypeScript
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 dcrouter-hosted (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 dcrouter-hosted 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;
|
|
};
|
|
}
|