/* tslint:disable */ /* eslint-disable */ /** * This file was automatically generated by Payload. * DO NOT MODIFY IT BY HAND. Instead, modify your source Payload config, * and re-run `payload generate:types` to regenerate this file. */ /** * Supported timezones in IANA format. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "supportedTimezones". */ export type SupportedTimezones = | 'Pacific/Midway' | 'Pacific/Niue' | 'Pacific/Honolulu' | 'Pacific/Rarotonga' | 'America/Anchorage' | 'Pacific/Gambier' | 'America/Los_Angeles' | 'America/Tijuana' | 'America/Denver' | 'America/Phoenix' | 'America/Chicago' | 'America/Guatemala' | 'America/New_York' | 'America/Bogota' | 'America/Caracas' | 'America/Santiago' | 'America/Buenos_Aires' | 'America/Sao_Paulo' | 'Atlantic/South_Georgia' | 'Atlantic/Azores' | 'Atlantic/Cape_Verde' | 'Europe/London' | 'Europe/Berlin' | 'Africa/Lagos' | 'Europe/Athens' | 'Africa/Cairo' | 'Europe/Moscow' | 'Asia/Riyadh' | 'Asia/Dubai' | 'Asia/Baku' | 'Asia/Karachi' | 'Asia/Tashkent' | 'Asia/Calcutta' | 'Asia/Dhaka' | 'Asia/Almaty' | 'Asia/Jakarta' | 'Asia/Bangkok' | 'Asia/Shanghai' | 'Asia/Singapore' | 'Asia/Tokyo' | 'Asia/Seoul' | 'Australia/Brisbane' | 'Australia/Sydney' | 'Pacific/Guam' | 'Pacific/Noumea' | 'Pacific/Auckland' | 'Pacific/Fiji'; export interface Config { auth: { users: UserAuthOperations; customers: CustomerAuthOperations; }; blocks: {}; collections: { users: User; customers: Customer; media: Media; events: Event; posts: Post; offers: Offer; 'event-registrations': EventRegistration; availability: Availability; 'availability-overrides': AvailabilityOverride; 'booking-requests': BookingRequest; conversations: Conversation; 'conversation-messages': ConversationMessage; 'group-registrations': GroupRegistration; redirects: Redirect; 'analytics-events': AnalyticsEvent; 'analytics-daily-stats': AnalyticsDailyStat; 'payload-kv': PayloadKv; 'payload-locked-documents': PayloadLockedDocument; 'payload-preferences': PayloadPreference; 'payload-migrations': PayloadMigration; }; collectionsJoins: {}; collectionsSelect: { users: UsersSelect | UsersSelect; customers: CustomersSelect | CustomersSelect; media: MediaSelect | MediaSelect; events: EventsSelect | EventsSelect; posts: PostsSelect | PostsSelect; offers: OffersSelect | OffersSelect; 'event-registrations': EventRegistrationsSelect | EventRegistrationsSelect; availability: AvailabilitySelect | AvailabilitySelect; 'availability-overrides': AvailabilityOverridesSelect | AvailabilityOverridesSelect; 'booking-requests': BookingRequestsSelect | BookingRequestsSelect; conversations: ConversationsSelect | ConversationsSelect; 'conversation-messages': ConversationMessagesSelect | ConversationMessagesSelect; 'group-registrations': GroupRegistrationsSelect | GroupRegistrationsSelect; redirects: RedirectsSelect | RedirectsSelect; 'analytics-events': AnalyticsEventsSelect | AnalyticsEventsSelect; 'analytics-daily-stats': AnalyticsDailyStatsSelect | AnalyticsDailyStatsSelect; 'payload-kv': PayloadKvSelect | PayloadKvSelect; 'payload-locked-documents': PayloadLockedDocumentsSelect | PayloadLockedDocumentsSelect; 'payload-preferences': PayloadPreferencesSelect | PayloadPreferencesSelect; 'payload-migrations': PayloadMigrationsSelect | PayloadMigrationsSelect; }; db: { defaultIDType: number; }; fallbackLocale: null; globals: { home: Home; about: About; 'angebote-intro': AngeboteIntro; 'aktuelles-intro': AktuellesIntro; contact: Contact; booking: Booking; 'meeting-settings': MeetingSetting; 'booking-settings': BookingSetting; 'seo-settings': SeoSetting; 'cookie-settings': CookieSetting; 'analytics-settings': AnalyticsSetting; }; globalsSelect: { home: HomeSelect | HomeSelect; about: AboutSelect | AboutSelect; 'angebote-intro': AngeboteIntroSelect | AngeboteIntroSelect; 'aktuelles-intro': AktuellesIntroSelect | AktuellesIntroSelect; contact: ContactSelect | ContactSelect; booking: BookingSelect | BookingSelect; 'meeting-settings': MeetingSettingsSelect | MeetingSettingsSelect; 'booking-settings': BookingSettingsSelect | BookingSettingsSelect; 'seo-settings': SeoSettingsSelect | SeoSettingsSelect; 'cookie-settings': CookieSettingsSelect | CookieSettingsSelect; 'analytics-settings': AnalyticsSettingsSelect | AnalyticsSettingsSelect; }; locale: null; widgets: { collections: CollectionsWidget; }; user: User | Customer; jobs: { tasks: unknown; workflows: unknown; }; } export interface UserAuthOperations { forgotPassword: { email: string; password: string; }; login: { email: string; password: string; }; registerFirstUser: { email: string; password: string; }; unlock: { email: string; password: string; }; } export interface CustomerAuthOperations { forgotPassword: { email: string; password: string; }; login: { email: string; password: string; }; registerFirstUser: { email: string; password: string; }; unlock: { email: string; password: string; }; } /** * Zugänge für den geschützten Admin-Bereich. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "users". */ export interface User { id: number; name: string; role: 'admin'; /** * Steuert, ob dieser Zugang das Analytics-Dashboard im Admin-Bereich sehen kann. */ canViewAnalytics?: boolean | null; calendarFeedTokenHash?: string | null; updatedAt: string; createdAt: string; email: string; resetPasswordToken?: string | null; resetPasswordExpiration?: string | null; salt?: string | null; hash?: string | null; loginAttempts?: number | null; lockUntil?: string | null; sessions?: | { id: string; createdAt?: string | null; expiresAt: string; }[] | null; password?: string | null; collection: 'users'; } /** * Konten der Website-Besucher (nicht die Admin-Zugänge unter „Benutzer“). * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "customers". */ export interface Customer { id: number; name: string; /** * Optional — für eine spätere Nutzung vorbereitet, aktuell nicht verpflichtend. */ phone?: string | null; /** * Wird automatisch gesetzt, sobald der Bestätigungslink aus der E-Mail angeklickt wird. Kann hier bei Bedarf manuell gesetzt werden. */ emailVerified?: boolean | null; emailVerificationTokenHash?: string | null; emailVerificationExpires?: string | null; updatedAt: string; createdAt: string; email: string; resetPasswordToken?: string | null; resetPasswordExpiration?: string | null; salt?: string | null; hash?: string | null; loginAttempts?: number | null; lockUntil?: string | null; sessions?: | { id: string; createdAt?: string | null; expiresAt: string; }[] | null; password?: string | null; collection: 'customers'; } /** * Bilder für die Website — Alt-Text ist für Barrierefreiheit und SEO Pflicht. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "media". */ export interface Media { id: number; /** * Kurze Beschreibung des Bildes für Screenreader und Suchmaschinen. */ alt: string; /** * Optionale, längere Beschreibung (z. B. für eine Bildunterschrift). */ caption?: string | null; updatedAt: string; createdAt: string; url?: string | null; thumbnailURL?: string | null; filename?: string | null; mimeType?: string | null; filesize?: number | null; width?: number | null; height?: number | null; focalX?: number | null; focalY?: number | null; sizes?: { thumbnail?: { url?: string | null; width?: number | null; height?: number | null; mimeType?: string | null; filesize?: number | null; filename?: string | null; }; card?: { url?: string | null; width?: number | null; height?: number | null; mimeType?: string | null; filesize?: number | null; filename?: string | null; }; hero?: { url?: string | null; width?: number | null; height?: number | null; mimeType?: string | null; filesize?: number | null; filename?: string | null; }; }; } /** * Termine und Veranstaltungen — erscheinen automatisch unter /termine. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "events". */ export interface Event { id: number; title: string; /** * Wird automatisch aus dem Titel erzeugt, kann aber angepasst werden. */ slug?: string | null; description?: { root: { type: string; children: { type: any; version: number; [k: string]: unknown; }[]; direction: ('ltr' | 'rtl') | null; format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; indent: number; version: number; }; [k: string]: unknown; } | null; date: string; startTime?: string | null; endTime?: string | null; location?: string | null; category: | 'prozessbegleitung' | 'doula' | 'erdenkinder' | 'maedchenkreis' | 'singen-im-kreis' | 'singen-fuer-schwangere' | 'singen-fuer-mamas-mit-baby' | 'sonstiges'; image?: (number | null) | Media; maxParticipants?: number | null; registrationRequired?: boolean | null; /** * z. B. eine E-Mail-Adresse, ein Link oder ein Hinweistext. */ registrationInfo?: string | null; /** * Aktiviert Meeting-Passwort, Beitrittsseite und Erinnerungs-E-Mails. */ isOnline?: boolean | null; /** * Wird automatisch erzeugt. Ist nicht Teil des Meeting-Links. */ meetingPassword?: string | null; regeneratePassword?: boolean | null; reminder60Enabled?: boolean | null; reminder30Enabled?: boolean | null; hostReminderEnabled?: boolean | null; hostReminder60Sent?: boolean | null; hostReminder30Sent?: boolean | null; /** * Wird automatisch gesetzt, wenn dieser Termin aus einer bestätigten Einzelbuchung entstanden ist. Solche Termine bleiben unveröffentlicht. */ isPrivateBooking?: boolean | null; bookingRequest?: (number | null) | BookingRequest; seo?: { /** * Falls leer: automatisch aus dem Seitentitel erzeugt. */ title?: string | null; /** * Falls leer: automatisch aus dem Inhalt erzeugt (erste ~160 Zeichen). */ description?: string | null; keywords?: string | null; /** * Falls leer: Hauptbild dieser Seite bzw. das Standard-Social-Bild aus den SEO-Einstellungen. */ ogImage?: (number | null) | Media; }; updatedAt: string; createdAt: string; _status?: ('draft' | 'published') | null; } /** * Terminanfragen von Nutzern — bestätigen, ablehnen oder einen alternativen Termin vorschlagen, indem du die Felder unten änderst und speicherst. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "booking-requests". */ export interface BookingRequest { id: number; user: number | Customer; offer: number | Offer; date: string; startTime: string; endTime: string; appointmentType: 'onsite' | 'online'; /** * Auf „Bestätigt“ setzen und speichern, um den Termin verbindlich zu machen (Konfliktprüfung läuft automatisch). */ status: 'pending' | 'confirmed' | 'rejected' | 'cancelled'; userMessage?: string | null; /** * Nur für Anna sichtbar. */ internalNote?: string | null; proposedAlternative?: { date?: string | null; startTime?: string | null; endTime?: string | null; }; linkedEvent?: (number | null) | Event; updatedAt: string; createdAt: string; } /** * Die Angebote von Anouma — erscheinen im Menü und auf /angebote. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "offers". */ export interface Offer { id: number; title: string; /** * Wird automatisch aus dem Titel erzeugt, kann aber angepasst werden. */ slug?: string | null; /** * Kurzer Satz für Karten, Menü und Übersicht. */ shortDescription: string; description: { root: { type: string; children: { type: any; version: number; [k: string]: unknown; }[]; direction: ('ltr' | 'rtl') | null; format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; indent: number; version: number; }; [k: string]: unknown; }; image?: (number | null) | Media; category: 'prozessbegleitung' | 'doula-begleitung' | 'kindergruppen' | 'singkreise'; /** * Kleinere Zahl erscheint zuerst. */ order?: number | null; /** * Private Angebote wie „Einzelbegleitung“ erscheinen nicht im Menü oder auf /angebote. */ visibility: 'public' | 'private'; /** * Aktiviert die Terminbuchung mit Kalenderauswahl auf der Angebotsseite. */ bookable?: boolean | null; /** * Gruppenangebote werden über Anmeldung, feste Wiederholung oder Bewerbungsfrist organisiert. */ bookingMode: 'individual' | 'group'; groupRegistrationMode?: ('fixed' | 'capacity' | 'request') | null; groupSchedule?: { recurrence?: ('weekly' | 'monthly') | null; weekday?: ('monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday') | null; monthDay?: number | null; /** * z. B. 18:00 Uhr */ startTime?: string | null; /** * z. B. 20:00 Uhr */ endTime?: string | null; }; groupCapacity?: number | null; registrationDeadline?: string | null; /** * Wird auf der Angebotsseite oberhalb des Anmeldeformulars angezeigt. */ groupInfo?: string | null; /** * z. B. „80 €“ oder „auf Anfrage“. */ price?: string | null; durationMinutes?: number | null; seo?: { /** * Falls leer: automatisch aus dem Seitentitel erzeugt. */ title?: string | null; /** * Falls leer: automatisch aus dem Inhalt erzeugt (erste ~160 Zeichen). */ description?: string | null; keywords?: string | null; /** * Falls leer: Hauptbild dieser Seite bzw. das Standard-Social-Bild aus den SEO-Einstellungen. */ ogImage?: (number | null) | Media; }; updatedAt: string; createdAt: string; _status?: ('draft' | 'published') | null; } /** * Neuigkeiten und Beiträge für die Seite „Aktuelles“. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "posts". */ export interface Post { id: number; title: string; /** * Wird automatisch aus dem Titel erzeugt, kann aber angepasst werden. */ slug?: string | null; /** * Kurzer Anrisstext für die Übersicht. */ teaser: string; content: { root: { type: string; children: { type: any; version: number; [k: string]: unknown; }[]; direction: ('ltr' | 'rtl') | null; format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; indent: number; version: number; }; [k: string]: unknown; }; coverImage?: (number | null) | Media; publishDate?: string | null; author?: string | null; seo?: { /** * Falls leer: automatisch aus dem Seitentitel erzeugt. */ title?: string | null; /** * Falls leer: automatisch aus dem Inhalt erzeugt (erste ~160 Zeichen). */ description?: string | null; keywords?: string | null; /** * Falls leer: Hauptbild dieser Seite bzw. das Standard-Social-Bild aus den SEO-Einstellungen. */ ogImage?: (number | null) | Media; }; updatedAt: string; createdAt: string; _status?: ('draft' | 'published') | null; } /** * Anmeldungen zu Terminen — wird beim öffentlichen Anmeldeformular befüllt. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "event-registrations". */ export interface EventRegistration { id: number; event: number | Event; name: string; email: string; status: 'registered' | 'cancelled' | 'attended'; registeredAt?: string | null; reminder60Sent?: boolean | null; reminder30Sent?: boolean | null; updatedAt: string; createdAt: string; } /** * Wiederkehrende wöchentliche Arbeitszeiten für Buchungsanfragen. Kein Eintrag = an diesem Tag nicht verfügbar. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "availability". */ export interface Availability { id: number; weekday: 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday' | 'sunday'; startTime: string; endTime: string; /** * Deaktivieren statt löschen, um eine Zeitspanne vorübergehend auszusetzen. */ active?: boolean | null; updatedAt: string; createdAt: string; } /** * Einzelne Abweichungen von den wiederkehrenden Verfügbarkeiten — Urlaub, Feiertage, Krankheit oder Sonderöffnungszeiten. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "availability-overrides". */ export interface AvailabilityOverride { id: number; date: string; type: 'unavailable' | 'custom-hours'; startTime?: string | null; endTime?: string | null; reason?: ('urlaub' | 'feiertag' | 'krankheit' | 'sonderoeffnungszeit' | 'sonstiges') | null; updatedAt: string; createdAt: string; } /** * Kontakt- und Terminanfragen als durchsuchbare Konversationen. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "conversations". */ export interface Conversation { id: number; subject: string; name: string; email: string; type: 'contact' | 'appointment' | 'group'; status: 'open' | 'waiting' | 'closed'; customer?: (number | null) | Customer; threadKey: string; lastMessageAt?: string | null; updatedAt: string; createdAt: string; } /** * Einzelne Nachrichten innerhalb einer Anfrage. Antworten aus dem CMS werden automatisch per E-Mail verschickt. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "conversation-messages". */ export interface ConversationMessage { id: number; conversation: number | Conversation; /** * Für Antworten im CMS „Anouma“ auswählen. Eingehende E-Mails werden automatisch als Anfragende Person gespeichert. */ senderType: 'visitor' | 'admin'; senderName?: string | null; senderEmail?: string | null; body: string; externalMessageId?: string | null; updatedAt: string; createdAt: string; } /** * Anmeldungen und Bewerbungen für Gruppenangebote. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "group-registrations". */ export interface GroupRegistration { id: number; offer: number | Offer; name: string; email: string; phone?: string | null; message?: string | null; status: 'pending' | 'accepted' | 'waitlist' | 'rejected' | 'cancelled'; registeredAt?: string | null; updatedAt: string; createdAt: string; } /** * Leitet eine alte URL (z. B. nach einer Slug-Änderung bei Angeboten, Terminen oder Aktuelles) dauerhaft auf eine neue weiter. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "redirects". */ export interface Redirect { id: number; /** * Nur der Pfad, z. B. /angebote/doula (ohne Domain). */ fromPath: string; /** * Ziel-Pfad, z. B. /angebote/doula-begleitung. */ toPath: string; type: 'permanent' | 'temporary'; enabled?: boolean | null; updatedAt: string; createdAt: string; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "analytics-events". */ export interface AnalyticsEvent { id: number; sessionId: string; visitorHash: string; path: string; eventName: string; referrerHost?: string | null; device?: ('mobile' | 'desktop' | 'tablet') | null; browser?: ('chrome' | 'firefox' | 'safari' | 'edge' | 'other') | null; updatedAt: string; createdAt: string; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "analytics-daily-stats". */ export interface AnalyticsDailyStat { id: number; date: string; sessions: number; pageViews: number; uniqueVisitors: number; eventCounts?: | { [k: string]: unknown; } | unknown[] | string | number | boolean | null; deviceCounts?: | { [k: string]: unknown; } | unknown[] | string | number | boolean | null; browserCounts?: | { [k: string]: unknown; } | unknown[] | string | number | boolean | null; topPaths?: | { [k: string]: unknown; } | unknown[] | string | number | boolean | null; entryPaths?: | { [k: string]: unknown; } | unknown[] | string | number | boolean | null; exitPaths?: | { [k: string]: unknown; } | unknown[] | string | number | boolean | null; updatedAt: string; createdAt: string; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "payload-kv". */ export interface PayloadKv { id: number; key: string; data: | { [k: string]: unknown; } | unknown[] | string | number | boolean | null; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "payload-locked-documents". */ export interface PayloadLockedDocument { id: number; document?: | ({ relationTo: 'users'; value: number | User; } | null) | ({ relationTo: 'customers'; value: number | Customer; } | null) | ({ relationTo: 'media'; value: number | Media; } | null) | ({ relationTo: 'events'; value: number | Event; } | null) | ({ relationTo: 'posts'; value: number | Post; } | null) | ({ relationTo: 'offers'; value: number | Offer; } | null) | ({ relationTo: 'event-registrations'; value: number | EventRegistration; } | null) | ({ relationTo: 'availability'; value: number | Availability; } | null) | ({ relationTo: 'availability-overrides'; value: number | AvailabilityOverride; } | null) | ({ relationTo: 'booking-requests'; value: number | BookingRequest; } | null) | ({ relationTo: 'conversations'; value: number | Conversation; } | null) | ({ relationTo: 'conversation-messages'; value: number | ConversationMessage; } | null) | ({ relationTo: 'group-registrations'; value: number | GroupRegistration; } | null) | ({ relationTo: 'redirects'; value: number | Redirect; } | null) | ({ relationTo: 'analytics-events'; value: number | AnalyticsEvent; } | null) | ({ relationTo: 'analytics-daily-stats'; value: number | AnalyticsDailyStat; } | null); globalSlug?: string | null; user: | { relationTo: 'users'; value: number | User; } | { relationTo: 'customers'; value: number | Customer; }; updatedAt: string; createdAt: string; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "payload-preferences". */ export interface PayloadPreference { id: number; user: | { relationTo: 'users'; value: number | User; } | { relationTo: 'customers'; value: number | Customer; }; key?: string | null; value?: | { [k: string]: unknown; } | unknown[] | string | number | boolean | null; updatedAt: string; createdAt: string; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "payload-migrations". */ export interface PayloadMigration { id: number; name?: string | null; batch?: number | null; updatedAt: string; createdAt: string; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "users_select". */ export interface UsersSelect { name?: T; role?: T; canViewAnalytics?: T; calendarFeedTokenHash?: T; updatedAt?: T; createdAt?: T; email?: T; resetPasswordToken?: T; resetPasswordExpiration?: T; salt?: T; hash?: T; loginAttempts?: T; lockUntil?: T; sessions?: | T | { id?: T; createdAt?: T; expiresAt?: T; }; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "customers_select". */ export interface CustomersSelect { name?: T; phone?: T; emailVerified?: T; emailVerificationTokenHash?: T; emailVerificationExpires?: T; updatedAt?: T; createdAt?: T; email?: T; resetPasswordToken?: T; resetPasswordExpiration?: T; salt?: T; hash?: T; loginAttempts?: T; lockUntil?: T; sessions?: | T | { id?: T; createdAt?: T; expiresAt?: T; }; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "media_select". */ export interface MediaSelect { alt?: T; caption?: T; updatedAt?: T; createdAt?: T; url?: T; thumbnailURL?: T; filename?: T; mimeType?: T; filesize?: T; width?: T; height?: T; focalX?: T; focalY?: T; sizes?: | T | { thumbnail?: | T | { url?: T; width?: T; height?: T; mimeType?: T; filesize?: T; filename?: T; }; card?: | T | { url?: T; width?: T; height?: T; mimeType?: T; filesize?: T; filename?: T; }; hero?: | T | { url?: T; width?: T; height?: T; mimeType?: T; filesize?: T; filename?: T; }; }; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "events_select". */ export interface EventsSelect { title?: T; slug?: T; description?: T; date?: T; startTime?: T; endTime?: T; location?: T; category?: T; image?: T; maxParticipants?: T; registrationRequired?: T; registrationInfo?: T; isOnline?: T; meetingPassword?: T; regeneratePassword?: T; reminder60Enabled?: T; reminder30Enabled?: T; hostReminderEnabled?: T; hostReminder60Sent?: T; hostReminder30Sent?: T; isPrivateBooking?: T; bookingRequest?: T; seo?: | T | { title?: T; description?: T; keywords?: T; ogImage?: T; }; updatedAt?: T; createdAt?: T; _status?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "posts_select". */ export interface PostsSelect { title?: T; slug?: T; teaser?: T; content?: T; coverImage?: T; publishDate?: T; author?: T; seo?: | T | { title?: T; description?: T; keywords?: T; ogImage?: T; }; updatedAt?: T; createdAt?: T; _status?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "offers_select". */ export interface OffersSelect { title?: T; slug?: T; shortDescription?: T; description?: T; image?: T; category?: T; order?: T; visibility?: T; bookable?: T; bookingMode?: T; groupRegistrationMode?: T; groupSchedule?: | T | { recurrence?: T; weekday?: T; monthDay?: T; startTime?: T; endTime?: T; }; groupCapacity?: T; registrationDeadline?: T; groupInfo?: T; price?: T; durationMinutes?: T; seo?: | T | { title?: T; description?: T; keywords?: T; ogImage?: T; }; updatedAt?: T; createdAt?: T; _status?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "event-registrations_select". */ export interface EventRegistrationsSelect { event?: T; name?: T; email?: T; status?: T; registeredAt?: T; reminder60Sent?: T; reminder30Sent?: T; updatedAt?: T; createdAt?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "availability_select". */ export interface AvailabilitySelect { weekday?: T; startTime?: T; endTime?: T; active?: T; updatedAt?: T; createdAt?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "availability-overrides_select". */ export interface AvailabilityOverridesSelect { date?: T; type?: T; startTime?: T; endTime?: T; reason?: T; updatedAt?: T; createdAt?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "booking-requests_select". */ export interface BookingRequestsSelect { user?: T; offer?: T; date?: T; startTime?: T; endTime?: T; appointmentType?: T; status?: T; userMessage?: T; internalNote?: T; proposedAlternative?: | T | { date?: T; startTime?: T; endTime?: T; }; linkedEvent?: T; updatedAt?: T; createdAt?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "conversations_select". */ export interface ConversationsSelect { subject?: T; name?: T; email?: T; type?: T; status?: T; customer?: T; threadKey?: T; lastMessageAt?: T; updatedAt?: T; createdAt?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "conversation-messages_select". */ export interface ConversationMessagesSelect { conversation?: T; senderType?: T; senderName?: T; senderEmail?: T; body?: T; externalMessageId?: T; updatedAt?: T; createdAt?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "group-registrations_select". */ export interface GroupRegistrationsSelect { offer?: T; name?: T; email?: T; phone?: T; message?: T; status?: T; registeredAt?: T; updatedAt?: T; createdAt?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "redirects_select". */ export interface RedirectsSelect { fromPath?: T; toPath?: T; type?: T; enabled?: T; updatedAt?: T; createdAt?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "analytics-events_select". */ export interface AnalyticsEventsSelect { sessionId?: T; visitorHash?: T; path?: T; eventName?: T; referrerHost?: T; device?: T; browser?: T; updatedAt?: T; createdAt?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "analytics-daily-stats_select". */ export interface AnalyticsDailyStatsSelect { date?: T; sessions?: T; pageViews?: T; uniqueVisitors?: T; eventCounts?: T; deviceCounts?: T; browserCounts?: T; topPaths?: T; entryPaths?: T; exitPaths?: T; updatedAt?: T; createdAt?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "payload-kv_select". */ export interface PayloadKvSelect { key?: T; data?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "payload-locked-documents_select". */ export interface PayloadLockedDocumentsSelect { document?: T; globalSlug?: T; user?: T; updatedAt?: T; createdAt?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "payload-preferences_select". */ export interface PayloadPreferencesSelect { user?: T; key?: T; value?: T; updatedAt?: T; createdAt?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "payload-migrations_select". */ export interface PayloadMigrationsSelect { name?: T; batch?: T; updatedAt?: T; createdAt?: T; } /** * Bearbeitbare Texte der Startseite (Hero, Über-mich-Teaser, Philosophie, CTA). * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "home". */ export interface Home { id: number; heroEyebrow?: string | null; heroTitle: string; heroHighlight?: string | null; heroSupporting?: string | null; heroImage?: (number | null) | Media; aboutEyebrow?: string | null; aboutTitle?: string | null; aboutText?: { root: { type: string; children: { type: any; version: number; [k: string]: unknown; }[]; direction: ('ltr' | 'rtl') | null; format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; indent: number; version: number; }; [k: string]: unknown; } | null; aboutImage?: (number | null) | Media; valuesEyebrow?: string | null; valuesTitle?: string | null; values?: | { title: string; quote: string; id?: string | null; }[] | null; ctaTitle?: string | null; ctaLead?: string | null; seo?: { /** * Falls leer: automatisch aus dem Seitentitel erzeugt. */ title?: string | null; /** * Falls leer: automatisch aus dem Inhalt erzeugt (erste ~160 Zeichen). */ description?: string | null; keywords?: string | null; /** * Falls leer: Hauptbild dieser Seite bzw. das Standard-Social-Bild aus den SEO-Einstellungen. */ ogImage?: (number | null) | Media; }; updatedAt?: string | null; createdAt?: string | null; } /** * Inhalt der Seite „Über mich“. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "about". */ export interface About { id: number; eyebrow?: string | null; title: string; portrait?: (number | null) | Media; body: { root: { type: string; children: { type: any; version: number; [k: string]: unknown; }[]; direction: ('ltr' | 'rtl') | null; format: 'left' | 'start' | 'center' | 'right' | 'end' | 'justify' | ''; indent: number; version: number; }; [k: string]: unknown; }; closingLead?: string | null; closingHighlight?: string | null; closingParagraph?: string | null; seo?: { /** * Falls leer: automatisch aus dem Seitentitel erzeugt. */ title?: string | null; /** * Falls leer: automatisch aus dem Inhalt erzeugt (erste ~160 Zeichen). */ description?: string | null; keywords?: string | null; /** * Falls leer: Hauptbild dieser Seite bzw. das Standard-Social-Bild aus den SEO-Einstellungen. */ ogImage?: (number | null) | Media; }; updatedAt?: string | null; createdAt?: string | null; } /** * Kopftext der Angebote-Übersichtsseite. Die Angebote selbst werden in der Sammlung „Angebote“ gepflegt. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "angebote-intro". */ export interface AngeboteIntro { id: number; eyebrow?: string | null; title: string; lead?: string | null; seo?: { /** * Falls leer: automatisch aus dem Seitentitel erzeugt. */ title?: string | null; /** * Falls leer: automatisch aus dem Inhalt erzeugt (erste ~160 Zeichen). */ description?: string | null; keywords?: string | null; /** * Falls leer: Hauptbild dieser Seite bzw. das Standard-Social-Bild aus den SEO-Einstellungen. */ ogImage?: (number | null) | Media; }; updatedAt?: string | null; createdAt?: string | null; } /** * Kopftext der Aktuelles-Seite. Die Beiträge selbst werden in der Sammlung „Beiträge“ gepflegt. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "aktuelles-intro". */ export interface AktuellesIntro { id: number; eyebrow?: string | null; title: string; lead?: string | null; seo?: { /** * Falls leer: automatisch aus dem Seitentitel erzeugt. */ title?: string | null; /** * Falls leer: automatisch aus dem Inhalt erzeugt (erste ~160 Zeichen). */ description?: string | null; keywords?: string | null; /** * Falls leer: Hauptbild dieser Seite bzw. das Standard-Social-Bild aus den SEO-Einstellungen. */ ogImage?: (number | null) | Media; }; updatedAt?: string | null; createdAt?: string | null; } /** * Inhalt und Kontaktdaten der Kontakt-Seite. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "contact". */ export interface Contact { id: number; eyebrow?: string | null; title: string; lead?: string | null; email: string; phone?: string | null; region?: string | null; seo?: { /** * Falls leer: automatisch aus dem Seitentitel erzeugt. */ title?: string | null; /** * Falls leer: automatisch aus dem Inhalt erzeugt (erste ~160 Zeichen). */ description?: string | null; keywords?: string | null; /** * Falls leer: Hauptbild dieser Seite bzw. das Standard-Social-Bild aus den SEO-Einstellungen. */ ogImage?: (number | null) | Media; }; updatedAt?: string | null; createdAt?: string | null; } /** * Inhalt der Seite „Termin buchen“. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "booking". */ export interface Booking { id: number; eyebrow?: string | null; title: string; lead?: string | null; steps?: | { title: string; text: string; id?: string | null; }[] | null; formNote?: string | null; seo?: { /** * Falls leer: automatisch aus dem Seitentitel erzeugt. */ title?: string | null; /** * Falls leer: automatisch aus dem Inhalt erzeugt (erste ~160 Zeichen). */ description?: string | null; keywords?: string | null; /** * Falls leer: Hauptbild dieser Seite bzw. das Standard-Social-Bild aus den SEO-Einstellungen. */ ogImage?: (number | null) | Media; }; updatedAt?: string | null; createdAt?: string | null; } /** * Zentrale Zeitfenster für alle Online-Termine. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "meeting-settings". */ export interface MeetingSetting { id: number; participantJoinWindowMinutes: number; hostJoinWindowMinutes: number; meetingCloseAfterMinutes: number; updatedAt?: string | null; createdAt?: string | null; } /** * Adresse für Vor-Ort-Termine (wird für den Maps-Link verwendet). * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "booking-settings". */ export interface BookingSetting { id: number; locationName?: string | null; street?: string | null; postalCode?: string | null; city?: string | null; region?: string | null; /** * Für strukturierte Daten, z. B. „Deutschland“. */ country?: string | null; updatedAt?: string | null; createdAt?: string | null; } /** * Globale SEO-Vorgaben für die gesamte Website — greift automatisch überall dort, wo eine Seite keine eigenen SEO-Angaben hat. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "seo-settings". */ export interface SeoSetting { id: number; /** * Nur bei Bedarf setzen (z. B. https://anouma.org) — überschreibt die Server-Konfiguration. Leer lassen, um die technische Standardeinstellung zu verwenden. */ siteUrl?: string | null; /** * Wird verwendet, wenn eine Seite keine eigene Meta-Beschreibung hat. */ defaultDescription?: string | null; /** * Wird verwendet, wenn eine Seite kein eigenes Open-Graph-Bild hat. */ defaultOgImage?: (number | null) | Media; /** * Deaktivieren, um die gesamte öffentliche Website vorübergehend für Suchmaschinen zu sperren (z. B. während des Aufbaus). Betrifft nicht Admin/Konto — die sind ohnehin immer gesperrt. */ robotsIndexable?: boolean | null; businessName?: string | null; /** * Kurzer, sachlicher Beschreibungstext für strukturierte Daten (nicht der Website-Text). */ businessDescription?: string | null; latitude?: number | null; longitude?: number | null; /** * Optional — nur für tatsächlich feste Zeiten (z. B. Sprechzeiten). */ openingHours?: | { days: ('Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday' | 'Sunday')[]; opens: string; closes: string; id?: string | null; }[] | null; socialLinks?: | { platform: string; url: string; id?: string | null; }[] | null; updatedAt?: string | null; createdAt?: string | null; } /** * Kategorien und Texte für den Cookie-Consent-Banner der Website. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "cookie-settings". */ export interface CookieSetting { id: number; /** * Bei Änderung müssen alle Besucher erneut zustimmen — bereits gespeicherte Einwilligungen mit einer älteren Version werden ignoriert und der Banner erscheint erneut. */ consentVersion: string; /** * Immer aktiv — technisch erforderlich, kann nicht deaktiviert werden. */ necessary: { label: string; description: string; }; preferences: { label: string; description: string; /** * Wenn deaktiviert, wird diese Kategorie im Banner nicht mehr angeboten. */ enabled?: boolean | null; }; statistics: { label: string; description: string; /** * Globaler Schalter für das gesamte Analytics-System. Wenn deaktiviert, wird diese Kategorie im Banner nicht mehr angeboten und Analytics-Daten werden serverseitig abgelehnt — auch bei einer noch gespeicherten alten Zustimmung. */ enabled?: boolean | null; }; updatedAt?: string | null; createdAt?: string | null; } /** * Aufbewahrungsdauer für Analytics-Rohdaten und aggregierte Tagesstatistiken. * * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "analytics-settings". */ export interface AnalyticsSetting { id: number; /** * Wie lange einzelne Analytics-Events gespeichert bleiben. Begrenzt auch den wählbaren Zeitraum im Analytics-Dashboard. */ rawRetentionDays: number; /** * Wie lange die täglichen Aggregat-Statistiken (ohne Einzel-Events) gespeichert bleiben. */ aggregateRetentionMonths: number; updatedAt?: string | null; createdAt?: string | null; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "home_select". */ export interface HomeSelect { heroEyebrow?: T; heroTitle?: T; heroHighlight?: T; heroSupporting?: T; heroImage?: T; aboutEyebrow?: T; aboutTitle?: T; aboutText?: T; aboutImage?: T; valuesEyebrow?: T; valuesTitle?: T; values?: | T | { title?: T; quote?: T; id?: T; }; ctaTitle?: T; ctaLead?: T; seo?: | T | { title?: T; description?: T; keywords?: T; ogImage?: T; }; updatedAt?: T; createdAt?: T; globalType?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "about_select". */ export interface AboutSelect { eyebrow?: T; title?: T; portrait?: T; body?: T; closingLead?: T; closingHighlight?: T; closingParagraph?: T; seo?: | T | { title?: T; description?: T; keywords?: T; ogImage?: T; }; updatedAt?: T; createdAt?: T; globalType?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "angebote-intro_select". */ export interface AngeboteIntroSelect { eyebrow?: T; title?: T; lead?: T; seo?: | T | { title?: T; description?: T; keywords?: T; ogImage?: T; }; updatedAt?: T; createdAt?: T; globalType?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "aktuelles-intro_select". */ export interface AktuellesIntroSelect { eyebrow?: T; title?: T; lead?: T; seo?: | T | { title?: T; description?: T; keywords?: T; ogImage?: T; }; updatedAt?: T; createdAt?: T; globalType?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "contact_select". */ export interface ContactSelect { eyebrow?: T; title?: T; lead?: T; email?: T; phone?: T; region?: T; seo?: | T | { title?: T; description?: T; keywords?: T; ogImage?: T; }; updatedAt?: T; createdAt?: T; globalType?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "booking_select". */ export interface BookingSelect { eyebrow?: T; title?: T; lead?: T; steps?: | T | { title?: T; text?: T; id?: T; }; formNote?: T; seo?: | T | { title?: T; description?: T; keywords?: T; ogImage?: T; }; updatedAt?: T; createdAt?: T; globalType?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "meeting-settings_select". */ export interface MeetingSettingsSelect { participantJoinWindowMinutes?: T; hostJoinWindowMinutes?: T; meetingCloseAfterMinutes?: T; updatedAt?: T; createdAt?: T; globalType?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "booking-settings_select". */ export interface BookingSettingsSelect { locationName?: T; street?: T; postalCode?: T; city?: T; region?: T; country?: T; updatedAt?: T; createdAt?: T; globalType?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "seo-settings_select". */ export interface SeoSettingsSelect { siteUrl?: T; defaultDescription?: T; defaultOgImage?: T; robotsIndexable?: T; businessName?: T; businessDescription?: T; latitude?: T; longitude?: T; openingHours?: | T | { days?: T; opens?: T; closes?: T; id?: T; }; socialLinks?: | T | { platform?: T; url?: T; id?: T; }; updatedAt?: T; createdAt?: T; globalType?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "cookie-settings_select". */ export interface CookieSettingsSelect { consentVersion?: T; necessary?: | T | { label?: T; description?: T; }; preferences?: | T | { label?: T; description?: T; enabled?: T; }; statistics?: | T | { label?: T; description?: T; enabled?: T; }; updatedAt?: T; createdAt?: T; globalType?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "analytics-settings_select". */ export interface AnalyticsSettingsSelect { rawRetentionDays?: T; aggregateRetentionMonths?: T; updatedAt?: T; createdAt?: T; globalType?: T; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "collections_widget". */ export interface CollectionsWidget { data?: { [k: string]: unknown; }; width: 'full'; } /** * This interface was referenced by `Config`'s JSON-Schema * via the `definition` "auth". */ export interface Auth { [k: string]: unknown; } declare module 'payload' { export interface GeneratedTypes extends Config {} }