/** * Nitrogen Connector — Shared Types * * Document interfaces matching the Payload collection/global schemas, * plus request body shapes used by the API endpoints. */ import type { BuilderModule, ComponentManifestEntry } from '@nitrogenbuilder/types'; export type JsonObject = Record; export type NitrogenModule = BuilderModule; interface NitrogenDocBase { id: string | number; title: string; slug: string; breadcrumbs?: Array<{ url?: string | null; label?: string | null; doc?: string | number | null; }>; status?: 'draft' | 'published'; _status?: 'draft' | 'published'; author?: string | number | { id: string | number; name?: string; email?: string; }; nitrogenData?: JsonObject | JsonObject[]; createdAt: string; updatedAt: string; } export interface NitrogenPageDoc extends NitrogenDocBase { pageSettings?: JsonObject; } export interface NitrogenTemplateDoc extends NitrogenDocBase { templateType?: string; associatedCollection?: string; templateSettings?: JsonObject; templateConditions?: JsonObject; } export interface NitrogenSettingsGlobal { licenseKey?: string; connectorToken?: string; nitrogenEditorUrl?: string; nitrogenEditorDevUrl?: string; frontendUrl?: string; frontendDevUrl?: string; /** @deprecated Use nitrogenEditorDevUrl. */ instanceUrl?: string; /** @deprecated Use frontendDevUrl. */ developmentUrl?: string; editorCdnVersion?: string; nitrogenConfig?: NitrogenConfig; } export interface NitrogenConfig { variables?: Record | Array<{ name: string; value?: string; }>; [key: string]: unknown; } export interface MediaDoc { id: string | number; filename?: string; mimeType?: string; alt?: string; url?: string; width?: number; height?: number; filesize?: number; sizes?: { thumbnail?: MediaSize; medium?: MediaSize; large?: MediaSize; [key: string]: MediaSize | undefined; }; createdAt: string; } export interface MediaSize { url?: string; width?: number; height?: number; } export interface PageCreateRequestBody { data?: { title?: string; slug?: string; author?: string | number; }; title?: string; slug?: string; author?: string | number; } export interface PageUpdateRequestBody { data?: PageUpdateData; title?: string; author?: string | number; data_content?: string | JsonObject[]; settings?: JsonObject; } interface PageUpdateData { title?: string; author?: string | number; data?: string | JsonObject[]; settings?: JsonObject; } export interface TemplateUpdateRequestBody { data?: TemplateUpdateData; title?: string; author?: string | number; data_content?: string | JsonObject[]; templateType?: string; settings?: JsonObject; conditions?: JsonObject; } interface TemplateUpdateData { title?: string; author?: string | number; data?: string | JsonObject[]; templateType?: string; settings?: JsonObject; conditions?: JsonObject; } export interface SlugLookupRequestBody { slug?: string; /** Language to resolve localized fields/slugs in (alias of ?lang=). */ lang?: string; data?: { slug?: string; lang?: string; }; } export interface MediaUpdateRequestBody { id: string | number; alt?: string; } export interface RenderDataRequestBody { pageData?: NitrogenModule[]; requestedData?: JsonObject & { id?: string | number; }; /** Which Payload collection to fetch dynamic data from */ collection?: string; } export interface NitrogenComponentCatalogDoc { id: string | number; componentName: string; scope?: string; sidebarCategory?: string; icon?: string; definition?: ComponentManifestEntry | JsonObject; source?: string; } export interface NitrogenComponentUsageDoc { id: string | number; usageKey: string; componentName: string; sourceCollection: string; sourceType: string; sourceDocumentId: string; sourceTitle?: string; sourceSlug?: string; sourceStatus?: string; moduleId?: string; } export interface NitrogenInventorySourceDoc { id: string | number; title?: string; slug?: string; status?: string; _status?: string; nitrogenData?: JsonObject | JsonObject[]; } export {};