155 lines
3.7 KiB
TypeScript
155 lines
3.7 KiB
TypeScript
import * as plugins from '../plugins.js';
|
|
import type * as authInterfaces from '../data/auth.js';
|
|
import type {
|
|
IDnsProviderPublic,
|
|
IProviderDomainListing,
|
|
TDnsProviderType,
|
|
TDnsProviderCredentials,
|
|
} from '../data/dns-provider.js';
|
|
|
|
// ============================================================================
|
|
// DNS Provider Endpoints
|
|
// ============================================================================
|
|
|
|
/**
|
|
* Get all DNS providers (public view, no secrets).
|
|
*/
|
|
export interface IReq_GetDnsProviders extends plugins.typedrequestInterfaces.implementsTR<
|
|
plugins.typedrequestInterfaces.ITypedRequest,
|
|
IReq_GetDnsProviders
|
|
> {
|
|
method: 'getDnsProviders';
|
|
request: {
|
|
identity?: authInterfaces.IIdentity;
|
|
apiToken?: string;
|
|
};
|
|
response: {
|
|
providers: IDnsProviderPublic[];
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Get a single DNS provider by id.
|
|
*/
|
|
export interface IReq_GetDnsProvider extends plugins.typedrequestInterfaces.implementsTR<
|
|
plugins.typedrequestInterfaces.ITypedRequest,
|
|
IReq_GetDnsProvider
|
|
> {
|
|
method: 'getDnsProvider';
|
|
request: {
|
|
identity?: authInterfaces.IIdentity;
|
|
apiToken?: string;
|
|
id: string;
|
|
};
|
|
response: {
|
|
provider: IDnsProviderPublic | null;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Create a new DNS provider.
|
|
*/
|
|
export interface IReq_CreateDnsProvider extends plugins.typedrequestInterfaces.implementsTR<
|
|
plugins.typedrequestInterfaces.ITypedRequest,
|
|
IReq_CreateDnsProvider
|
|
> {
|
|
method: 'createDnsProvider';
|
|
request: {
|
|
identity?: authInterfaces.IIdentity;
|
|
apiToken?: string;
|
|
name: string;
|
|
type: TDnsProviderType;
|
|
credentials: TDnsProviderCredentials;
|
|
};
|
|
response: {
|
|
success: boolean;
|
|
id?: string;
|
|
message?: string;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Update a DNS provider. Only supplied fields are updated.
|
|
* Pass `credentials` to rotate the secret.
|
|
*/
|
|
export interface IReq_UpdateDnsProvider extends plugins.typedrequestInterfaces.implementsTR<
|
|
plugins.typedrequestInterfaces.ITypedRequest,
|
|
IReq_UpdateDnsProvider
|
|
> {
|
|
method: 'updateDnsProvider';
|
|
request: {
|
|
identity?: authInterfaces.IIdentity;
|
|
apiToken?: string;
|
|
id: string;
|
|
name?: string;
|
|
credentials?: TDnsProviderCredentials;
|
|
};
|
|
response: {
|
|
success: boolean;
|
|
message?: string;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Delete a DNS provider. Fails if any IDomain still references it
|
|
* unless `force: true` is set.
|
|
*/
|
|
export interface IReq_DeleteDnsProvider extends plugins.typedrequestInterfaces.implementsTR<
|
|
plugins.typedrequestInterfaces.ITypedRequest,
|
|
IReq_DeleteDnsProvider
|
|
> {
|
|
method: 'deleteDnsProvider';
|
|
request: {
|
|
identity?: authInterfaces.IIdentity;
|
|
apiToken?: string;
|
|
id: string;
|
|
force?: boolean;
|
|
};
|
|
response: {
|
|
success: boolean;
|
|
message?: string;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* Test the connection to a DNS provider. Used both for newly-saved
|
|
* providers and on demand from the UI.
|
|
*/
|
|
export interface IReq_TestDnsProvider extends plugins.typedrequestInterfaces.implementsTR<
|
|
plugins.typedrequestInterfaces.ITypedRequest,
|
|
IReq_TestDnsProvider
|
|
> {
|
|
method: 'testDnsProvider';
|
|
request: {
|
|
identity?: authInterfaces.IIdentity;
|
|
apiToken?: string;
|
|
id: string;
|
|
};
|
|
response: {
|
|
ok: boolean;
|
|
error?: string;
|
|
testedAt: number;
|
|
};
|
|
}
|
|
|
|
/**
|
|
* List the domains visible to a DNS provider's API account.
|
|
* Used when importing — does NOT persist anything.
|
|
*/
|
|
export interface IReq_ListProviderDomains extends plugins.typedrequestInterfaces.implementsTR<
|
|
plugins.typedrequestInterfaces.ITypedRequest,
|
|
IReq_ListProviderDomains
|
|
> {
|
|
method: 'listProviderDomains';
|
|
request: {
|
|
identity?: authInterfaces.IIdentity;
|
|
apiToken?: string;
|
|
providerId: string;
|
|
};
|
|
response: {
|
|
success: boolean;
|
|
domains?: IProviderDomainListing[];
|
|
message?: string;
|
|
};
|
|
}
|