export interface SyncCollection { entries: Array>; assets: Array; deletedEntries: Array>; deletedAssets: Array; nextSyncToken: string; } export interface ContentType { sys: { id: string; }; fields: ContentTypeField[]; } export interface ContentTypeField { id: string; type: string; omitted?: boolean; required?: boolean; validations?: Array; linkType?: 'Asset' | 'Entry'; items?: { type: string; linkType?: 'Asset' | 'Entry'; validations?: Array; }; } export interface LinkContentTypeValidation { linkContentType: string[]; } export interface Sys { type: Type; id: string; createdAt: string; updatedAt: string; locale: string; revision?: number; space?: Link<'Space'>; } export interface EntrySys extends Sys<'Entry'> { contentType: Link<'ContentType'>; } export interface Link { sys: { type: 'Link'; linkType: LinkType; id: string; }; } export interface Entry> { sys: EntrySys; fields: T; metadata: Metadata; } export interface Asset { sys: Sys<'Asset'>; fields: { title: string; description: string; file: { url: string; details: { size: number; image?: { width: number; height: number; }; }; fileName: string; contentType: string; }; }; metadata: Metadata; } export interface ContentfulCollection { total: number; skip: number; limit: number; items: Array; } export type AssetCollection = ContentfulCollection; export interface EntryCollection extends ContentfulCollection> { errors?: Array; includes?: { Entry: Entry[]; Asset: Asset[]; }; } interface Metadata { tags: TagLink[]; } interface TagLink { sys: { type: 'Link'; linkType: 'Tag'; id: string; }; } export interface DeletedEntry { sys: Sys<'DeletedEntry'> & { deletedAt: string; }; } export interface DeletedAsset { sys: Sys<'DeletedAsset'> & { deletedAt: string; }; } export interface SyncResponse { sys: { type: 'Array'; }; items: Array; nextSyncUrl?: string; nextPageUrl?: string; } export type SyncItem = Entry | Asset | DeletedEntry | DeletedAsset; export {};