UNPKG

@takashito/linode-mcp-server

Version:

MCP server for Linode API

143 lines (142 loc) 5.09 kB
import { AxiosInstance } from 'axios'; import { PaginatedResponse, PaginationParams } from './instances'; export interface ObjectStorageCluster { id: string; domain: string; region: string; status: string; static_site_enabled: boolean; } export interface ObjectStorageBucket { cluster: string; created: string; label: string; hostname: string; objects: number; size: number; region: string; cors_enabled: boolean; acl: 'private' | 'public-read' | 'authenticated-read' | 'public-read-write' | 'custom'; } export interface ObjectStorageKey { id: number; label: string; access_key: string; secret_key: string; limited: boolean; bucket_access: BucketAccess[]; created: string; } export interface BucketAccess { cluster: string; bucket_name: string; permissions: 'read_only' | 'read_write'; } export interface DefaultBucketAccess { cluster: string; bucket_name: string; region: string; cors_enabled: boolean; acl: 'private' | 'public-read' | 'authenticated-read' | 'public-read-write' | 'custom'; } export interface ObjectStorageObject { name: string; etag: string; last_modified: string; owner: string; size: number; url: string; } export interface BucketCertificate { certificate: string; expiry: string; } export interface CreateBucketRequest { label: string; cluster: string; endpoint_type?: 'E0' | 'E1' | 'E2' | 'E3'; acl?: 'private' | 'public-read' | 'authenticated-read' | 'public-read-write' | 'custom'; cors_enabled?: boolean; } export interface CreateObjectStorageKeyRequest { label: string; bucket_access?: BucketAccess[]; } export interface UpdateObjectStorageKeyRequest { label?: string; bucket_access?: BucketAccess[]; } export interface UpdateBucketAccessRequest { acl?: 'private' | 'public-read' | 'authenticated-read' | 'public-read-write' | 'custom'; cors_enabled?: boolean; } export interface UploadCertificateRequest { certificate: string; private_key: string; } export interface ObjectACLRequest { acl: 'private' | 'public-read' | 'authenticated-read' | 'public-read-write' | 'custom'; } export interface ObjectURLRequest { name: string; method?: 'GET' | 'PUT' | 'POST' | 'DELETE'; expires_in?: number; content_type?: string; } export interface ObjectURLResponse { url: string; } export interface TransferStats { used: number; billable: number; quota: number; regions: { region: string; used: number; billable: number; quota: number; }[]; } export interface ObjectStorageType { id: string; label: string; storage_price: number; transfer_price: number; } export interface ObjectStorageClient { getClusters: () => Promise<ObjectStorageCluster[]>; getEndpoints: (params?: PaginationParams) => Promise<PaginatedResponse<{ region: string; endpoint_type: 'E0' | 'E1' | 'E2' | 'E3'; s3_endpoint: string | null; }>>; getBuckets: (params?: PaginationParams) => Promise<PaginatedResponse<ObjectStorageBucket>>; getBucket: (cluster: string, label: string) => Promise<ObjectStorageBucket>; createBucket: (data: CreateBucketRequest) => Promise<ObjectStorageBucket>; deleteBucket: (cluster: string, label: string) => Promise<void>; getBucketAccess: (cluster: string, label: string) => Promise<{ acl: string; cors_enabled: boolean; }>; updateBucketAccess: (cluster: string, label: string, data: UpdateBucketAccessRequest) => Promise<{ acl: string; cors_enabled: boolean; }>; getObjects: (cluster: string, bucket: string, params?: PaginationParams) => Promise<PaginatedResponse<ObjectStorageObject>>; updateObjectACL: (cluster: string, bucket: string, name: string, data: ObjectACLRequest) => Promise<void>; getObjectURL: (cluster: string, bucket: string, data: ObjectURLRequest) => Promise<ObjectURLResponse>; getBucketCertificate: (cluster: string, bucket: string) => Promise<BucketCertificate>; uploadBucketCertificate: (cluster: string, bucket: string, data: UploadCertificateRequest) => Promise<BucketCertificate>; deleteBucketCertificate: (cluster: string, bucket: string) => Promise<void>; getKeys: (params?: PaginationParams) => Promise<PaginatedResponse<ObjectStorageKey>>; getKey: (id: number) => Promise<ObjectStorageKey>; createKey: (data: CreateObjectStorageKeyRequest) => Promise<ObjectStorageKey>; updateKey: (id: number, data: UpdateObjectStorageKeyRequest) => Promise<ObjectStorageKey>; deleteKey: (id: number) => Promise<void>; getDefaultBucketAccess: () => Promise<DefaultBucketAccess>; updateDefaultBucketAccess: (data: UpdateBucketAccessRequest) => Promise<DefaultBucketAccess>; getTransferStats: () => Promise<TransferStats>; getTypes: () => Promise<ObjectStorageType[]>; cancelObjectStorage: () => Promise<void>; } export declare function createObjectStorageClient(axios: AxiosInstance): ObjectStorageClient;