@takashito/linode-mcp-server
Version:
MCP server for Linode API
162 lines (161 loc) • 5.78 kB
TypeScript
import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './common';
export interface ObjectStorageCluster {
id: string;
domain: string;
region: string;
status: string;
static_site_enabled: boolean;
}
export interface ObjectStorageBucket {
region: string;
created: string;
label: string;
hostname: string;
objects: number;
size: number;
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 {
region: string;
bucket_name: string;
permissions: 'read_only' | 'read_write';
}
export interface DefaultBucketAccess {
region: string;
bucket_name: 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;
region: 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[];
regions?: string[];
}
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 ObjectStorageQuota {
quota_id: string;
quota_name: string;
endpoint_type: string;
s3_endpoint: string | null;
description: string;
quota_limit: number;
resource_metric: string;
}
export interface ObjectStorageQuotaUsage {
quota_limit: number;
usage: number;
}
export interface ObjectACLResponse {
acl: string;
acl_xml: string;
}
export interface ObjectStorageClient {
getEndpoints: (params?: PaginationParams) => Promise<PaginatedResponse<{
region: string;
endpoint_type: 'E0' | 'E1' | 'E2' | 'E3';
s3_endpoint: string | null;
}>>;
getBuckets: (params?: PaginationParams) => Promise<PaginatedResponse<ObjectStorageBucket>>;
getBucket: (region: string, label: string) => Promise<ObjectStorageBucket>;
createBucket: (data: CreateBucketRequest) => Promise<ObjectStorageBucket>;
deleteBucket: (region: string, label: string) => Promise<void>;
getBucketAccess: (region: string, label: string) => Promise<{
acl: string;
cors_enabled: boolean;
}>;
updateBucketAccess: (region: string, label: string, data: UpdateBucketAccessRequest) => Promise<{
acl: string;
cors_enabled: boolean;
}>;
getObjects: (region: string, bucket: string, params?: PaginationParams) => Promise<PaginatedResponse<ObjectStorageObject>>;
updateObjectACL: (region: string, bucket: string, name: string, data: ObjectACLRequest) => Promise<void>;
getObjectURL: (region: string, bucket: string, data: ObjectURLRequest) => Promise<ObjectURLResponse>;
getBucketCertificate: (region: string, bucket: string) => Promise<BucketCertificate>;
uploadBucketCertificate: (region: string, bucket: string, data: UploadCertificateRequest) => Promise<BucketCertificate>;
deleteBucketCertificate: (region: 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>;
getBucketsInRegion: (regionId: string, params?: PaginationParams) => Promise<PaginatedResponse<ObjectStorageBucket>>;
getObjectACL: (region: string, bucket: string, name: string) => Promise<ObjectACLResponse>;
putBucketAccess: (region: string, label: string, data: UpdateBucketAccessRequest) => Promise<void>;
getQuotas: (params?: PaginationParams) => Promise<PaginatedResponse<ObjectStorageQuota>>;
getQuota: (quotaId: string) => Promise<ObjectStorageQuota>;
getQuotaUsage: (quotaId: string) => Promise<ObjectStorageQuotaUsage>;
getTransferStats: () => Promise<TransferStats>;
getTypes: () => Promise<ObjectStorageType[]>;
cancelObjectStorage: () => Promise<void>;
}
export declare function createObjectStorageClient(axios: AxiosInstance): ObjectStorageClient;