1992 lines
48 KiB
TypeScript
1992 lines
48 KiB
TypeScript
/* 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<false> | UsersSelect<true>;
|
|
customers: CustomersSelect<false> | CustomersSelect<true>;
|
|
media: MediaSelect<false> | MediaSelect<true>;
|
|
events: EventsSelect<false> | EventsSelect<true>;
|
|
posts: PostsSelect<false> | PostsSelect<true>;
|
|
offers: OffersSelect<false> | OffersSelect<true>;
|
|
'event-registrations': EventRegistrationsSelect<false> | EventRegistrationsSelect<true>;
|
|
availability: AvailabilitySelect<false> | AvailabilitySelect<true>;
|
|
'availability-overrides': AvailabilityOverridesSelect<false> | AvailabilityOverridesSelect<true>;
|
|
'booking-requests': BookingRequestsSelect<false> | BookingRequestsSelect<true>;
|
|
conversations: ConversationsSelect<false> | ConversationsSelect<true>;
|
|
'conversation-messages': ConversationMessagesSelect<false> | ConversationMessagesSelect<true>;
|
|
'group-registrations': GroupRegistrationsSelect<false> | GroupRegistrationsSelect<true>;
|
|
redirects: RedirectsSelect<false> | RedirectsSelect<true>;
|
|
'analytics-events': AnalyticsEventsSelect<false> | AnalyticsEventsSelect<true>;
|
|
'analytics-daily-stats': AnalyticsDailyStatsSelect<false> | AnalyticsDailyStatsSelect<true>;
|
|
'payload-kv': PayloadKvSelect<false> | PayloadKvSelect<true>;
|
|
'payload-locked-documents': PayloadLockedDocumentsSelect<false> | PayloadLockedDocumentsSelect<true>;
|
|
'payload-preferences': PayloadPreferencesSelect<false> | PayloadPreferencesSelect<true>;
|
|
'payload-migrations': PayloadMigrationsSelect<false> | PayloadMigrationsSelect<true>;
|
|
};
|
|
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<false> | HomeSelect<true>;
|
|
about: AboutSelect<false> | AboutSelect<true>;
|
|
'angebote-intro': AngeboteIntroSelect<false> | AngeboteIntroSelect<true>;
|
|
'aktuelles-intro': AktuellesIntroSelect<false> | AktuellesIntroSelect<true>;
|
|
contact: ContactSelect<false> | ContactSelect<true>;
|
|
booking: BookingSelect<false> | BookingSelect<true>;
|
|
'meeting-settings': MeetingSettingsSelect<false> | MeetingSettingsSelect<true>;
|
|
'booking-settings': BookingSettingsSelect<false> | BookingSettingsSelect<true>;
|
|
'seo-settings': SeoSettingsSelect<false> | SeoSettingsSelect<true>;
|
|
'cookie-settings': CookieSettingsSelect<false> | CookieSettingsSelect<true>;
|
|
'analytics-settings': AnalyticsSettingsSelect<false> | AnalyticsSettingsSelect<true>;
|
|
};
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
key?: T;
|
|
data?: T;
|
|
}
|
|
/**
|
|
* This interface was referenced by `Config`'s JSON-Schema
|
|
* via the `definition` "payload-locked-documents_select".
|
|
*/
|
|
export interface PayloadLockedDocumentsSelect<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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<T extends boolean = true> {
|
|
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 {}
|
|
} |