ultimate-mcp-server
Version:
The definitive all-in-one Model Context Protocol server for AI-assisted coding across 30+ platforms
198 lines • 4.95 kB
TypeScript
/**
* Content Management Types
* Inspired by contentful-mcp for comprehensive content operations
*/
export interface ContentSpace {
id: string;
name: string;
description?: string;
environments: ContentEnvironment[];
createdAt: Date;
updatedAt: Date;
metadata?: Record<string, any>;
}
export interface ContentEnvironment {
id: string;
name: string;
spaceId: string;
isActive: boolean;
createdAt: Date;
updatedAt: Date;
}
export interface ContentType {
id: string;
name: string;
description?: string;
displayField?: string;
fields: ContentField[];
metadata?: Record<string, any>;
}
export interface ContentField {
id: string;
name: string;
type: ContentFieldType;
required: boolean;
localized: boolean;
validations?: ContentValidation[];
defaultValue?: any;
metadata?: Record<string, any>;
}
export type ContentFieldType = 'Symbol' | 'Text' | 'RichText' | 'Integer' | 'Number' | 'Boolean' | 'Date' | 'Location' | 'Media' | 'Reference' | 'Array' | 'Object' | 'JSON';
export interface ContentValidation {
type: string;
params?: any;
message?: string;
}
export interface ContentEntry {
id: string;
type: string;
fields: Record<string, any>;
status: ContentStatus;
version: number;
locale?: string;
createdAt: Date;
updatedAt: Date;
publishedAt?: Date;
author?: string;
tags?: string[];
metadata?: Record<string, any>;
}
export type ContentStatus = 'draft' | 'published' | 'archived' | 'deleted';
export interface ContentAsset {
id: string;
title: string;
description?: string;
file: AssetFile;
status: ContentStatus;
version: number;
createdAt: Date;
updatedAt: Date;
publishedAt?: Date;
tags?: string[];
metadata?: Record<string, any>;
}
export interface AssetFile {
url: string;
fileName: string;
contentType: string;
size: number;
dimensions?: {
width: number;
height: number;
};
checksum?: string;
}
export interface ContentComment {
id: string;
entryId: string;
parentId?: string;
author: string;
body: string;
status: 'active' | 'resolved' | 'deleted';
createdAt: Date;
updatedAt: Date;
replies?: ContentComment[];
}
export interface ContentFilter {
contentType?: string;
status?: ContentStatus[];
tags?: string[];
search?: string;
locale?: string;
createdAfter?: Date;
updatedAfter?: Date;
author?: string;
fields?: Record<string, any>;
}
export interface ContentPagination {
limit: number;
offset: number;
total?: number;
hasNext?: boolean;
hasPrevious?: boolean;
}
export interface ContentBulkOperation {
action: 'publish' | 'unpublish' | 'archive' | 'delete' | 'validate';
entryIds: string[];
options?: {
skipValidation?: boolean;
force?: boolean;
locale?: string;
};
}
export interface ContentValidationResult {
valid: boolean;
errors: ContentValidationError[];
warnings: ContentValidationWarning[];
}
export interface ContentValidationError {
field: string;
message: string;
code: string;
details?: any;
}
export interface ContentValidationWarning {
field: string;
message: string;
code: string;
}
export interface ContentSearchOptions extends ContentFilter {
pagination: ContentPagination;
sort?: {
field: string;
order: 'asc' | 'desc';
};
include?: ('author' | 'tags' | 'comments' | 'history')[];
}
export interface ContentHistory {
entryId: string;
versions: ContentVersion[];
}
export interface ContentVersion {
version: number;
author: string;
changes: ContentChange[];
timestamp: Date;
message?: string;
}
export interface ContentChange {
field: string;
oldValue: any;
newValue: any;
action: 'added' | 'modified' | 'removed';
}
export interface ContentImportOptions {
format: 'json' | 'csv' | 'xml' | 'markdown';
mapping?: Record<string, string>;
skipValidation?: boolean;
updateExisting?: boolean;
locale?: string;
}
export interface ContentExportOptions {
format: 'json' | 'csv' | 'xml' | 'markdown';
filter?: ContentFilter;
fields?: string[];
includeMetadata?: boolean;
includeAssets?: boolean;
}
export interface ContentManagerConfig {
maxItemsPerPage: number;
defaultLocale: string;
supportedLocales: string[];
enableVersioning: boolean;
enableComments: boolean;
autoSave: boolean;
autoSaveInterval: number;
cacheEnabled: boolean;
cacheTTL: number;
}
export interface ContentManagerStats {
totalEntries: number;
totalAssets: number;
totalComments: number;
entryTypes: Record<string, number>;
statusBreakdown: Record<ContentStatus, number>;
storageUsed: number;
lastActivity: Date;
}
//# sourceMappingURL=types.d.ts.map