UNPKG

@takashito/linode-mcp-server

Version:

MCP server for Linode API

459 lines (458 loc) 13 kB
import { AxiosInstance } from 'axios'; import { PaginatedResponse, PaginationParams } from './common'; 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 Entity { id: number; type: string; label: string; url: string; } export interface IamRole { name: string; description: string; permissions: string[]; } export interface UserRolePermissions { username: string; roles: string[]; } export interface UpdateUserRolePermissionsRequest { roles: string[]; } export interface DelegationChildAccount { euuid: string; company: string; email: string; is_active: boolean; } export interface DelegationChildAccountUsers { euuid: string; users: string[]; } export interface UpdateDelegationChildAccountUsersRequest { users: string[]; } export interface DelegationDefaultRoles { roles: string[]; } export interface UpdateDelegationDefaultRolesRequest { roles: string[]; } export interface DelegationProfileAccount { euuid: string; company: string; email: string; is_active: boolean; } export interface DelegationToken { token: string; scopes: string[]; expiry: string; } export interface UserDelegations { username: string; child_accounts: string[]; } export interface MaintenancePolicy { id: number; type: string; frequency: string; day_of_week: number; pending: boolean; } export interface ResourceLock { id: number; resource_id: number; resource_type: string; reason?: string; created: string; } export interface CreateResourceLockRequest { resource_id: number; resource_type: string; reason?: 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<{}>; getEvents(params?: PaginationParams): Promise<PaginatedResponse<AccountEvent>>; getEvent(eventId: number): Promise<AccountEvent>; 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>; getEntities(params?: PaginationParams): Promise<PaginatedResponse<Entity>>; getIamRoles(): Promise<IamRole[]>; getUserRolePermissions(username: string): Promise<UserRolePermissions>; updateUserRolePermissions(username: string, data: UpdateUserRolePermissionsRequest): Promise<UserRolePermissions>; getDelegationChildAccounts(params?: PaginationParams): Promise<PaginatedResponse<DelegationChildAccount>>; getDelegationChildAccountUsers(euuid: string): Promise<DelegationChildAccountUsers>; updateDelegationChildAccountUsers(euuid: string, data: UpdateDelegationChildAccountUsersRequest): Promise<DelegationChildAccountUsers>; getDelegationDefaultRoles(): Promise<DelegationDefaultRoles>; updateDelegationDefaultRoles(data: UpdateDelegationDefaultRolesRequest): Promise<DelegationDefaultRoles>; getDelegationProfileAccounts(params?: PaginationParams): Promise<PaginatedResponse<DelegationProfileAccount>>; getDelegationProfileAccount(euuid: string): Promise<DelegationProfileAccount>; createDelegationToken(euuid: string): Promise<DelegationToken>; getUserDelegations(username: string): Promise<UserDelegations>; getMaintenancePolicies(params?: PaginationParams): Promise<PaginatedResponse<MaintenancePolicy>>; getResourceLocks(params?: PaginationParams): Promise<PaginatedResponse<ResourceLock>>; getResourceLock(resourceLockId: number): Promise<ResourceLock>; createResourceLock(data: CreateResourceLockRequest): Promise<ResourceLock>; deleteResourceLock(resourceLockId: number): Promise<void>; } export declare function createAccountClient(axiosInstance: AxiosInstance): AccountClientInterface;