@takashito/linode-mcp-server
Version:
MCP server for Linode API
114 lines (113 loc) • 3.42 kB
TypeScript
import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './common';
export interface Domain {
id: number;
domain: string;
type: 'master' | 'slave';
status: 'active' | 'disabled' | 'edit_mode' | 'has_errors';
description?: string;
soa_email?: string;
retry_sec?: number;
master_ips?: string[];
axfr_ips?: string[];
expire_sec?: number;
refresh_sec?: number;
ttl_sec?: number;
tags?: string[];
created: string;
updated: string;
}
export interface DomainRecord {
id: number;
type: string;
name: string;
target: string;
priority?: number;
weight?: number;
port?: number;
service?: string;
protocol?: string;
ttl_sec?: number;
tag?: string;
created: string;
updated: string;
}
export interface CreateDomainRequest {
domain: string;
type: 'master' | 'slave';
soa_email?: string;
master_ips?: string[];
description?: string;
axfr_ips?: string[];
ttl_sec?: number;
refresh_sec?: number;
retry_sec?: number;
expire_sec?: number;
tags?: string[];
}
export interface UpdateDomainRequest {
domain?: string;
type?: 'master' | 'slave';
soa_email?: string;
master_ips?: string[];
description?: string;
axfr_ips?: string[];
ttl_sec?: number;
refresh_sec?: number;
retry_sec?: number;
expire_sec?: number;
tags?: string[];
status?: 'active' | 'disabled' | 'edit_mode' | 'has_errors';
}
export interface CreateDomainRecordRequest {
name: string;
target: string;
type: string;
priority?: number;
weight?: number;
port?: number;
service?: string;
protocol?: string;
ttl_sec?: number;
tag?: string;
}
export interface UpdateDomainRecordRequest {
name?: string;
target?: string;
priority?: number;
weight?: number;
port?: number;
service?: string;
protocol?: string;
ttl_sec?: number;
tag?: string;
}
export interface ImportZoneRequest {
domain: string;
remote_nameserver: string;
}
export interface CloneDomainRequest {
domain: string;
}
export interface ZoneFileResponse {
zone_file: string[];
}
export interface DomainsClient {
getDomains: (params?: PaginationParams) => Promise<PaginatedResponse<Domain>>;
getDomain: (id: number) => Promise<Domain>;
createDomain: (data: CreateDomainRequest) => Promise<Domain>;
updateDomain: (id: number, data: UpdateDomainRequest) => Promise<Domain>;
deleteDomain: (id: number) => Promise<void>;
getDomainRecords: (id: number, params?: PaginationParams) => Promise<PaginatedResponse<DomainRecord>>;
getDomainRecord: (domainId: number, recordId: number) => Promise<DomainRecord>;
createDomainRecord: (domainId: number, data: CreateDomainRecordRequest) => Promise<DomainRecord>;
updateDomainRecord: (domainId: number, recordId: number, data: UpdateDomainRecordRequest) => Promise<DomainRecord>;
deleteDomainRecord: (domainId: number, recordId: number) => Promise<void>;
importZone: (data: ImportZoneRequest) => Promise<Domain>;
cloneDomain: (id: number, data: CloneDomainRequest) => Promise<Domain>;
getZoneFile: (id: number) => Promise<ZoneFileResponse>;
}
/**
* Creates a domains client for interfacing with the Linode Domains API
*/
export declare function createDomainsClient(axios: AxiosInstance): DomainsClient;