60 lines
1.2 KiB
TypeScript
60 lines
1.2 KiB
TypeScript
|
|
/**
|
||
|
|
* Domain, DNS, and certificate data shapes for Onebox
|
||
|
|
*/
|
||
|
|
|
||
|
|
export interface IDomain {
|
||
|
|
id?: number;
|
||
|
|
domain: string;
|
||
|
|
dnsProvider: 'cloudflare' | 'manual' | null;
|
||
|
|
cloudflareZoneId?: string;
|
||
|
|
isObsolete: boolean;
|
||
|
|
defaultWildcard: boolean;
|
||
|
|
createdAt: number;
|
||
|
|
updatedAt: number;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface ICertificate {
|
||
|
|
id?: number;
|
||
|
|
domainId: number;
|
||
|
|
certDomain: string;
|
||
|
|
isWildcard: boolean;
|
||
|
|
certPem: string;
|
||
|
|
keyPem: string;
|
||
|
|
fullchainPem: string;
|
||
|
|
expiryDate: number;
|
||
|
|
issuer: string;
|
||
|
|
isValid: boolean;
|
||
|
|
createdAt: number;
|
||
|
|
updatedAt: number;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface ICertRequirement {
|
||
|
|
id?: number;
|
||
|
|
domainId: number;
|
||
|
|
serviceId: number;
|
||
|
|
subdomain: string;
|
||
|
|
status: 'pending' | 'active' | 'renewing' | 'failed';
|
||
|
|
certificateId?: number;
|
||
|
|
createdAt: number;
|
||
|
|
updatedAt: number;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface IDomainDetail {
|
||
|
|
domain: IDomain;
|
||
|
|
certificates: ICertificate[];
|
||
|
|
requirements: ICertRequirement[];
|
||
|
|
serviceCount: number;
|
||
|
|
certificateStatus: 'valid' | 'expiring-soon' | 'expired' | 'pending' | 'none';
|
||
|
|
daysRemaining: number | null;
|
||
|
|
}
|
||
|
|
|
||
|
|
export interface IDnsRecord {
|
||
|
|
id?: number;
|
||
|
|
domain: string;
|
||
|
|
type: 'A' | 'AAAA' | 'CNAME';
|
||
|
|
value: string;
|
||
|
|
cloudflareID?: string;
|
||
|
|
createdAt: number;
|
||
|
|
updatedAt: number;
|
||
|
|
}
|