@takashito/linode-mcp-server
Version:
MCP server for Linode API
374 lines (373 loc) • 10.2 kB
TypeScript
import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './instances';
export interface Account {
active_since: string;
address_1: string;
address_2?: string;
balance: number;
balances: {
uninvoiced: number;
past_due: boolean;
};
billing_source: string;
capabilities: string[];
city: string;
company: string;
country: string;
credit_card: {
expiry: string;
last_four: string;
};
email: string;
euuid: string;
first_name: string;
last_name: string;
phone: string;
state: string;
tax_id: string;
zip: string;
}
export interface UpdateAccountRequest {
address_1?: string;
address_2?: string;
city?: string;
company?: string;
country?: string;
email?: string;
first_name?: string;
last_name?: string;
phone?: string;
state?: string;
tax_id?: string;
zip?: string;
}
export interface Agreement {
id: string;
description: string;
body: string;
title: string;
created: string;
modified: string;
expiry?: string;
url?: string;
}
export interface AcknowledgeAgreementRequest {
agreement_ids: string[];
}
export interface ServiceAvailability {
region: string;
services: Record<string, boolean>;
}
export interface RegionServiceAvailability {
id: string;
services: Record<string, boolean>;
}
export interface CancelAccountRequest {
comments?: string;
}
export interface ChildAccount {
euuid: string;
company: string;
email: string;
is_active: boolean;
billing_cycle: string;
state: string;
has_credit_card: boolean;
enterprise_data?: {
credit_limit: number;
acl: Record<string, string>;
};
}
export interface ProxyTokenRequest {
expiry?: string;
scopes?: string[];
}
export interface ProxyToken {
token: string;
scopes: string[];
expiry: string;
}
export interface AccountEvent {
id: number;
action: string;
created: string;
entity: {
id: number;
label: string;
type: string;
url: string;
};
percent_complete?: number;
rate?: string;
read: boolean;
seen: boolean;
status: string;
time_remaining?: number;
username: string;
message?: string;
secondary_entity?: {
id: number;
label: string;
type: string;
url: string;
};
}
export interface Invoice {
id: number;
date: string;
label: string;
subtotal: number;
tax: number;
total: number;
}
export interface InvoiceItem {
amount: number;
from: string;
to: string;
label: string;
quantity: number;
type: string;
unit_price: string;
tax: number;
total: number;
}
export interface AccountLogin {
id: number;
datetime: string;
ip: string;
restricted: boolean;
status: string;
username: string;
}
export interface Maintenance {
when: string;
entity: {
id: string;
label: string;
type: string;
url: string;
};
duration: number;
status: string;
type: string;
reason: string;
key: string;
created: string;
updated: string;
}
export interface Notification {
body: string;
entity: {
id: number;
label: string;
type: string;
url: string;
};
label: string;
message: string;
severity: string;
type: string;
until: string;
when: string;
}
export interface OAuthClient {
id: string;
label: string;
redirect_uri: string;
secret: string;
public: boolean;
status: string;
thumbnail_url?: string;
}
export interface CreateOAuthClientRequest {
label: string;
redirect_uri: string;
public?: boolean;
}
export interface UpdateOAuthClientRequest {
label?: string;
redirect_uri?: string;
public?: boolean;
}
export interface OAuthClientSecret {
secret: string;
}
export interface AccountSettings {
managed: boolean;
longview_subscription: string | null;
network_helper: boolean;
backups_enabled: boolean;
object_storage: 'active' | 'disabled' | 'suspended';
}
export interface UpdateAccountSettingsRequest {
network_helper?: boolean;
backups_enabled?: boolean;
}
export interface AccountNetworkTransfer {
billable: number;
used: number;
quota: number;
}
export interface User {
username: string;
email: string;
restricted: boolean;
ssh_keys: string[];
two_factor_auth: boolean;
}
export interface CreateUserRequest {
username: string;
email: string;
restricted: boolean;
}
export interface UpdateUserRequest {
email?: string;
restricted?: boolean;
}
export interface UserGrants {
global: {
account_access: string;
add_domains?: boolean;
add_databases?: boolean;
add_firewalls?: boolean;
add_images?: boolean;
add_linodes?: boolean;
add_longview?: boolean;
add_nodebalancers?: boolean;
add_stackscripts?: boolean;
add_volumes?: boolean;
cancel_account?: boolean;
longview_subscription?: boolean;
};
database: Record<string, {
id: number;
permissions: string;
label: string;
}>;
domain: Record<string, {
id: number;
permissions: string;
label: string;
}>;
firewall: Record<string, {
id: number;
permissions: string;
label: string;
}>;
image: Record<string, {
id: number;
permissions: string;
label: string;
}>;
linode: Record<string, {
id: number;
permissions: string;
label: string;
}>;
longview: Record<string, {
id: number;
permissions: string;
label: string;
}>;
nodebalancer: Record<string, {
id: number;
permissions: string;
label: string;
}>;
stackscript: Record<string, {
id: number;
permissions: string;
label: string;
}>;
volume: Record<string, {
id: number;
permissions: string;
label: string;
}>;
}
export interface UpdateUserGrantsRequest {
global: {
account_access?: string;
add_domains?: boolean;
add_databases?: boolean;
add_firewalls?: boolean;
add_images?: boolean;
add_linodes?: boolean;
add_longview?: boolean;
add_nodebalancers?: boolean;
add_stackscripts?: boolean;
add_volumes?: boolean;
cancel_account?: boolean;
longview_subscription?: boolean;
};
database?: Record<string, {
permissions: string;
}>;
domain?: Record<string, {
permissions: string;
}>;
firewall?: Record<string, {
permissions: string;
}>;
image?: Record<string, {
permissions: string;
}>;
linode?: Record<string, {
permissions: string;
}>;
longview?: Record<string, {
permissions: string;
}>;
nodebalancer?: Record<string, {
permissions: string;
}>;
stackscript?: Record<string, {
permissions: string;
}>;
volume?: Record<string, {
permissions: string;
}>;
}
export interface AccountClientInterface {
getAccount(): Promise<Account>;
updateAccount(data: UpdateAccountRequest): Promise<Account>;
getAgreements(): Promise<Agreement[]>;
acknowledgeAgreements(data: AcknowledgeAgreementRequest): Promise<{}>;
getServiceAvailability(): Promise<ServiceAvailability[]>;
getRegionServiceAvailability(regionId: string): Promise<RegionServiceAvailability>;
cancelAccount(data: CancelAccountRequest): Promise<{}>;
getChildAccounts(params?: PaginationParams): Promise<PaginatedResponse<ChildAccount>>;
getChildAccount(euuid: string): Promise<ChildAccount>;
createProxyToken(euuid: string, data: ProxyTokenRequest): Promise<ProxyToken>;
getEvents(params?: PaginationParams): Promise<PaginatedResponse<AccountEvent>>;
getEvent(eventId: number): Promise<AccountEvent>;
markEventAsRead(eventId: number): Promise<{}>;
markEventAsSeen(eventId: number): Promise<{}>;
getInvoices(params?: PaginationParams): Promise<PaginatedResponse<Invoice>>;
getInvoice(invoiceId: number): Promise<Invoice>;
getInvoiceItems(invoiceId: number, params?: PaginationParams): Promise<PaginatedResponse<InvoiceItem>>;
getLogins(params?: PaginationParams): Promise<PaginatedResponse<AccountLogin>>;
getLogin(loginId: number): Promise<AccountLogin>;
getMaintenances(params?: PaginationParams): Promise<PaginatedResponse<Maintenance>>;
getNotifications(): Promise<Notification[]>;
getOAuthClients(params?: PaginationParams): Promise<PaginatedResponse<OAuthClient>>;
createOAuthClient(data: CreateOAuthClientRequest): Promise<OAuthClient>;
deleteOAuthClient(clientId: string): Promise<void>;
getOAuthClient(clientId: string): Promise<OAuthClient>;
updateOAuthClient(clientId: string, data: UpdateOAuthClientRequest): Promise<OAuthClient>;
resetOAuthClientSecret(clientId: string): Promise<OAuthClientSecret>;
getOAuthClientThumbnail(clientId: string): Promise<any>;
updateOAuthClientThumbnail(clientId: string, thumbnailData: any): Promise<{}>;
getAccountSettings(): Promise<AccountSettings>;
updateAccountSettings(data: UpdateAccountSettingsRequest): Promise<AccountSettings>;
enableManagedService(): Promise<{}>;
getNetworkTransfer(): Promise<AccountNetworkTransfer>;
getUsers(params?: PaginationParams): Promise<PaginatedResponse<User>>;
createUser(data: CreateUserRequest): Promise<User>;
deleteUser(username: string): Promise<void>;
getUser(username: string): Promise<User>;
updateUser(username: string, data: UpdateUserRequest): Promise<User>;
getUserGrants(username: string): Promise<UserGrants>;
updateUserGrants(username: string, data: UpdateUserGrantsRequest): Promise<UserGrants>;
}
export declare function createAccountClient(axiosInstance: AxiosInstance): AccountClientInterface;