UNPKG

@takashito/linode-mcp-server

Version:

MCP server for Linode API

114 lines (113 loc) 3.42 kB
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;